傳統兩層結構
在過去應用系統開發過程中,CLIENT/SERVER體繫結構得到了廣泛的應用 。其特點是,應用程式邏輯通常分布在客戶和伺服器兩端,用戶端發出資料資源訪問請求,伺服器端將結果返回用戶端。但CLIENT/SERVER結構存在著很多體繫結構上的問題,比如:當用戶端數目激增時,伺服器端的效能會因為負載過重而大大衰減;一旦應用的需求發生變化,用戶端和伺服器端的應用程式都需要進行修改,給應用維護和升級帶來了極大的不便;大量的資料轉送增加了網路的負載等等。
三層結構介紹
所謂三層體繫結構,是在用戶端與資料庫之間加入了一個"中介層",也叫組件層。這裡所說的三層體系,不是指物理上的三層,不是簡單地放置三台機器就是三層體繫結構,也不僅僅有B/S應用才是三層體繫結構,三層是指邏輯上的三層,即使這三個層放置到一台機器上。
三層體系的應用程式將商務規則、資料訪問、合法性校正等工作放到了中介層進行處理。通常情況下,用戶端不直接與資料庫進行互動,而是通過COM/DCOM通訊與中介層建立串連,再經由中介層與資料庫進行互動。
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)、Just-In-Time 編譯(JIT)、跨語言互動、跨平台。 .NET 還可比喻是作業系統提供給開發人員的面向對像的API。 ASP.net是.net中的一部分。它最大的優點除了是編譯執行速度快外,我覺得最大的優點是頁面和代碼分離的編寫方式,再加上.net庫提供的支援事件的各種WEB控制項,以及.NET公用平台的類庫(FCL),和以前編寫網頁方式相比可謂是一場革命。
用ASP.NET部署三層架構
ASP.NET可以使用.NET平台快速方便的部署三層架構。ASP.NET革命性的變化是在網頁中也使用基於事件的處理,可以指定處理的後台代碼檔案,可以使用C#,VB,J#作為後台代碼的語言。.NET中可以方便的實現組件的裝配,後台代碼通過命名控制項可以方便的使用自己定義的組件。顯示層放在ASP頁面中,資料庫操作和邏輯層用組件來實現,這樣就很方便的實現了三層架構。
下面分別就各層的實現舉個製作留言簿的小例子。
我們首先在sqlserver資料庫中建一個資料庫GestDB,在GestDB中建表:Guestbook
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.如所示。
第二步:建資料庫訪問控制項。單擊的"確定"。在視窗右邊的 "方案總管"中右擊"解決方案"guestbook""選擇"添加"->"建立項目",彈出如下視窗,模板選擇類庫,填寫名稱,位置。注意該類庫理論上與留言簿的工程是沒有關係的,所以儲存位置可以任意。
第三步:建立邏輯處理層。同第二步,建立另一個控制項BusinessLayer。此控制項用來調用資料庫控制項,封裝留言簿所有的邏輯處理。如所示。
第四步:關於引用。因為BUSINESSLAYER要用到系統的WEB控制項和剛才建的DBLayer,所以必須把二者添加引用。右鍵點擊BUSINESSLAYER的"引用",選擇.NET的"System.web.dll"雙擊選中
然後再點項目的"DBLayer"雙擊選中。
第五步:把GUESTBOOK ASP.NET項目跟邏輯層聯絡起來,同樣使用添加引用。注意:在BUSINESSLAYER已經引用過DBLAYER,在GUESTBOOK處只需引用BUSINESSLAYER就可以了。
現在你的GUESTBOOK方案總管應該是如所示:
如果不是的話,請檢查一下上面的步驟哪裡是否出錯。
通過上述步驟,就已經成功部署了ASP.NET的三層架構。在guestbook這一層我們放置應用顯示的ASP頁面,在BusinessLayer層,我們把所有的商務邏輯代碼在該層實現。DataLayer層主要處理資料庫的操作,供BusinessLayer層調用。
只要在各個層中實現具體的類就可以成功實施三層結構的應用程式了。
總結:
本文簡要描述了三層架構的軟體體系思想,通過一個留言簿的例子主要介紹了用MS.NET部署三層結構的具體實現方法。