天天看點

ASP.NET三層架構模式詳解(留言簿)

傳統兩層結構

  在過去應用系統開發過程中,CLIENT/SERVER體系結構得到了廣泛的應用 。其特點是,應用程式邏輯通常分布在客戶和伺服器兩端,用戶端發出資料資源通路請求,伺服器端将結果傳回用戶端。但CLIENT/SERVER結構存在着很多體系結構上的問題,比如:當用戶端數目激增時,伺服器端的性能會因為負載過重而大大衰減;一旦應用的需求發生變化,用戶端和伺服器端的應用程式都需要進行修改,給應用維護和更新帶來了極大的不便;大量的資料傳輸增加了網絡的負載等等。

   三層結構介紹

  所謂三層體系結構,是在用戶端與資料庫之間加入了一個"中間層",也叫元件層。這裡所說的三層體系,不是指實體上的三層,不是簡單地放置三台機器就是三層體系結構,也不僅僅有B/S應用才是三層體系結構,三層是指邏輯上的三層,即使這三個層放置到一台機器上。

  三層體系的應用程式将業務規則、資料通路、合法性校驗等工作放到了中間層進行處理。通常情況下,用戶端不直接與資料庫進行互動,而是通過COM/DCOM通訊與中間層建立連接配接,再經由中間層與資料庫進行互動。

ASP.NET三層架構模式詳解(留言簿)

  ASP.net隻是.net中的一部分。它最大的優點除了是編譯執行速度快外,我覺得最大的優點是頁面和代碼分離的編寫方式(效果就象DELPHI裡的FORM設計界面和處理代碼分離一樣),對我們這些慣使RAD工具的人來說不啻是個福音。再加上.net庫提供的支援事件的各種WEB控件,和以前編寫網頁方式相比可謂是一場革命。随着分布式對象技術的逐漸成熟,多層分布式應用體系結構得到了越來越多的應用。應用系統隻有向多層分布式轉變,才能最終解決CLIENT/SERVER結構存在的問題。在多層架構下,應用可以分布在不同的系統平台上,通過分布式技術實作異構平台間對象的互相通信。将應用系統內建于分布式系統之上,能極大地提高系統的可擴充性。

  在多層分布式應用中,在用戶端和伺服器之間加入了一層或多層應用服務程式,這種程式稱為"應用伺服器"。開發人員可以将應用的商業邏輯放在中間層應用伺服器上,把應用的業務邏輯與使用者界面分開。在保證用戶端功能的前提下,為使用者提供一個簡潔的界面。這意味着如果需要修改應用程式代碼,隻需要對中間層應用伺服器進行修改,而不用修改成千上萬的用戶端應用程式。進而使開發人員可以專注于應用系統核心業務邏輯的分析、設計和開發,簡化了應用系統的開發、更新和更新工作。

   Microsoft.NET 為三層結構做的準備

  Microsoft .NET Framework是微軟推出的一套下一代開發平台。.NET 基于開發人員的角度來說它是一個公共平台的類庫(FCL),包含了近100 個命名空間(namespace)的近5000個類,想想看這是多的強大,還包括一個公共語言運作庫(CLR)。因為隻要符合.NET的公共運作規範(CLS的語言都可以 使用它提供的強大的類,并編譯為微軟的中間語言(MSIL),在其他的應用中就可以當作一個元件來調用。同時享受公共運作庫帶來的一切好處: 垃圾自動回收(GC)、實時編譯(JIT)、跨語言互動、跨平台。 .NET 還可比喻是作業系統提供給開發人員的面向對像的API。 ASP.net是.net中的一部分。它最大的優點除了是編譯執行速度快外,我覺得最大的優點是頁面和代碼分離的編寫方式,再加上.net庫提供的支援事件的各種WEB控件,以及.NET公共平台的類庫(FCL),和以前編寫網頁方式相比可謂是一場革命。

   用ASP.NET部署三層架構

  ASP.NET可以使用.NET平台快速友善的部署三層架構。ASP.NET革命性的變化是在網頁中也使用基于事件的處理,可以指定處理的背景代碼檔案,可以使用C#,VB,J#作為背景代碼的語言。.NET中可以友善的實作元件的裝配,背景代碼通過命名控件可以友善的使用自己定義的元件。顯示層放在ASP頁面中,資料庫操作和邏輯層用元件來實作,這樣就很友善的實作了三層架構。

ASP.NET三層架構模式詳解(留言簿)

  下面分别就各層的實作舉個制作留言簿的小例子。

  我們首先在sqlserver資料庫中建一個資料庫GestDB,在GestDB中建表:Guestbook

ASP.NET三層架構模式詳解(留言簿)
  Create table Geustbook(id int(4) unique not null,name varchar(20),
    content text, Primary key id);      

  第一步:打開VS.NET,點選檔案-》建立-》空白解決方案,在彈出的建立項目中選擇Visal C#項目,模闆選擇ASP.NET Web應用程式.在位置處給本方案命名為geustbook.如下圖所示。

ASP.NET三層架構模式詳解(留言簿)

  第二步:建資料庫通路控件。單擊上圖的"确定"。在視窗右邊的 "解決方案資料總管"中右擊"解決方案"guestbook""選擇"添加"->"建立項目",彈出如下視窗,如圖模闆選擇類庫,填寫名稱,位置。注意該類庫理論上與留言簿的工程是沒有關系的,是以存儲位置可以任意。

ASP.NET三層架構模式詳解(留言簿)

  第三步:建立邏輯處理層。同第二步,建立另一個控件BusinessLayer。此控件用來調用資料庫控件,封裝留言簿所有的邏輯處理。如下圖所示。

ASP.NET三層架構模式詳解(留言簿)

  第四步:關于引用。因為BUSINESSLAYER要用到系統的WEB控件和剛才建的DBLayer,是以必須把二者添加引用。右鍵點選BUSINESSLAYER的"引用",選擇.NET的"System.web.dll"輕按兩下選中

ASP.NET三層架構模式詳解(留言簿)

  然後再點項目的"DBLayer"輕按兩下選中。

ASP.NET三層架構模式詳解(留言簿)

  第五步:把GUESTBOOK ASP.NET項目跟邏輯層聯系起來,同樣使用添加引用。注意:在BUSINESSLAYER已經引用過DBLAYER,在GUESTBOOK處隻需引用BUSINESSLAYER就可以了。

ASP.NET三層架構模式詳解(留言簿)

  現在你的GUESTBOOK解決方案資料總管應該是如下圖所示:

ASP.NET三層架構模式詳解(留言簿)

  如果不是的話,請檢查一下上面的步驟哪裡是否出錯。

  通過上述步驟,就已經成功部署了ASP.NET的三層架構。在guestbook這一層我們放置應用顯示的ASP頁面,在BusinessLayer層,我們把所有的業務邏輯代碼在該層實作。DataLayer層主要處理資料庫的操作,供BusinessLayer層調用。

  隻要在各個層中實作具體的類就可以成功實施三層結構的應用程式了。

  總結:

  本文簡要描述了三層架構的軟體體系思想,通過一個留言簿的例子主要介紹了用MS.NET部署三層結構的具體實作方法。