用MS.NET開發(fā)三層結構應用程序
傳統(tǒng)兩層結構
在過去應用系統(tǒng)開發(fā)過程中, CLIENT/SERVER體系結構得到了廣泛的應用. 其特點是, 應用程序邏輯通常分布在客戶和服務器兩端, 客戶端發(fā)出數據資源訪問請求, 服務器端將結果返回客戶端. 但CLIENT/SERVER結構存在著很多體系結構上的問題, 比如:當客戶端數目激增時, 服務器端的性能會因為負載過重而大大衰減;一旦應用的需求發(fā)生變化, 客戶端和服務器端的應用程序都需要進行修改, 給應用維護和升級帶來了極大的不便; 大量的數據傳輸增加了網絡的負載等等.
三層結構介紹
所謂三層體系結構, 是在客戶端與數據庫之間加入了一個"中間層", 也叫組件層. 這里所說的三層體系, 不是指物理上的三層, 不是簡單地放置三臺機器就是三層體系結構, 也不僅僅有B/S應用才是三層體系結構, 三層是指邏輯上的三層, 即使這三個層放置到一臺機器上.
三層體系的應用程序將業(yè)務規(guī)則、數據訪問、合法性校驗等工作放到了中間層進行處理. 通常情況下, 客戶端不直接與數據庫進行交互, 而是通過COM/DCOM通訊與中間層建立連接, 再經由中間層與數據庫進行交互.

ASP.net只是.net中的一部分. 它最大的優(yōu)點除了是編譯執(zhí)行速度快外, 我覺得最大的優(yōu)點是頁面和代碼分離的編寫方式(效果就象DELPHI里的FORM設計界面和處理代碼分離一樣), 對我們這些慣使RAD工具的人來說不啻是個福音. 再加上.net庫提供的支持事件的各種WEB控件, 和以前編寫網頁方式相比可謂是一場革命. 隨著分布式對象技術的逐漸成熟, 多層分布式應用體系結構得到了越來越多的應用. 應用系統(tǒng)只有向多層分布式轉變, 才能最終解決CLIENT/SERVER結構存在的問題. 在多層架構下, 應用可以分布在不同的系統(tǒng)平臺上, 通過分布式技術實現異構平臺間對象的相互通信. 將應用系統(tǒng)集成于分布式系統(tǒng)之上, 能極大地提高系統(tǒng)的可擴展性.
在多層分布式應用中, 在客戶端和服務器之間加入了一層或多層應用服務程序, 這種程序稱為"應用服務器". 開發(fā)人員可以將應用的商業(yè)邏輯放在中間層應用服務器上, 把應用的業(yè)務邏輯與用戶界面分開. 在保證客戶端功能的前提下, 為用戶提供一個簡潔的界面. 這意味著如果需要修改應用程序代碼, 只需要對中間層應用服務器進行修改, 而不用修改成千上萬的客戶端應用程序. 從而使開發(fā)人員可以專注于應用系統(tǒng)核心業(yè)務邏輯的分析、設計和開發(fā), 簡化了應用系統(tǒng)的開發(fā)、更新和升級工作.
Microsoft.NET 為三層結構做的準備
Microsoft .NET Framework是微軟推出的一套下一代開發(fā)平臺. .NET 基于開發(fā)人員的角度來說它是一個公共平臺的類庫(FCL), 包含了近100 個命名空間(namespace)的近5000個類, 想想看這是多的強大, 還包括一個公共語言運行庫(CLR). 因為只要符合.NET的公共運行規(guī)范(CLS的語言都可以 使用它提供的強大的類, 并編譯為微軟的中間語言(MSIL), 在其他的應用中就可以當作一個組件來調用. 同時享受公共運行庫帶來的一切好處: 垃圾自動回收(GC)、實時編譯(JIT)、跨語言互動、跨平臺. .NET 還可比喻是操作系統(tǒng)提供給開發(fā)人員的面向對像的API. ASP.net是.net中的一部分. 它最大的優(yōu)點除了是編譯執(zhí)行速度快外, 我覺得最大的優(yōu)點是頁面和代碼分離的編寫方式, 再加上.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要用到系統(tǒng)的WEB控件和剛才建的DBLayer, 所以必須把二者添加引用. 右鍵點擊BUSINESSLAYER的"引用", 選擇.NET的"System.web.dll"雙擊選中
 然后再點項目的"DBLayer"雙擊選中.
 第五步:把GUESTBOOK ASP.NET項目跟邏輯層聯系起來, 同樣使用添加引用. 注意:在BUSINESSLAYER已經引用過DBLAYER, 在GUESTBOOK處只需引用BUSINESSLAYER就可以了.
 現在你的GUESTBOOK解決方案資源管理器應該是如下圖所示:
 如果不是的話, 請檢查一下上面的步驟哪里是否出錯.
通過上述步驟, 就已經成功部署了ASP.NET的三層架構. 在guestbook這一層我們放置應用顯示的ASP頁面, 在BusinessLayer層, 我們把所有的業(yè)務邏輯代碼在該層實現. DataLayer層主要處理數據庫的操作, 供BusinessLayer層調用.
只要在各個層中實現具體的類就可以成功實施三層結構的應用程序了.
總結
本文簡要描述了三層架構的軟件體系思想, 通過一個留言簿的例子主要介紹了用MS.NET部署三層結構的具體實現方法.
|