用MS.NET開(kāi)發(fā)三層結構應用程序
作者: 出處: 人氣:219
收藏此頁(yè) 收藏此頁(yè)到365Key 收藏此頁(yè)到ViVi用MS.NET開(kāi)發(fā)三層結構應用程序
傳統兩層結構
在過(guò)去應用系統開(kāi)發(fā)過(guò)程中, CLIENT/SERVER體系結構得到了廣泛的應用. 其特點(diǎn)是, 應用程序邏輯通常分布在客戶(hù)和服務(wù)器兩端, 客戶(hù)端發(fā)出數據資源訪(fǎng)問(wèn)請求, 服務(wù)器端將結果返回客戶(hù)端. 但CLIENT/SERVER結構存在著(zhù)很多體系結構上的問(wèn)題, 比如:當客戶(hù)端數目激增時(shí), 服務(wù)器端的性能會(huì )因為負載過(guò)重而大大衰減;一旦應用的需求發(fā)生變化, 客戶(hù)端和服務(wù)器端的應用程序都需要進(jìn)行修改, 給應用維護和升級帶來(lái)了極大的不便; 大量的數據傳輸增加了網(wǎng)絡(luò )的負載等等.
三層結構介紹
所謂三層體系結構, 是在客戶(hù)端與數據庫之間加入了一個(gè)"中間層", 也叫組件層. 這里所說(shuō)的三層體系, 不是指物理上的三層, 不是簡(jiǎn)單地放置三臺機器就是三層體系結構, 也不僅僅有B/S應用才是三層體系結構, 三層是指邏輯上的三層, 即使這三個(gè)層放置到一臺機器上.
三層體系的應用程序將業(yè)務(wù)規則、數據訪(fǎng)問(wèn)、合法性校驗等工作放到了中間層進(jìn)行處理. 通常情況下, 客戶(hù)端不直接與數據庫進(jìn)行交互, 而是通過(guò)COM/DCOM通訊與中間層建立連接, 再經(jīng)由中間層與數據庫進(jìn)行交互.
ASP.net只是.net中的一部分. 它最大的優(yōu)點(diǎn)除了是編譯執行速度快外, 我覺(jué)得最大的優(yōu)點(diǎn)是頁(yè)面和代碼分離的編寫(xiě)方式(效果就象DELPHI里的FORM設計界面和處理代碼分離一樣), 對我們這些慣使RAD工具的人來(lái)說(shuō)不啻是個(gè)福音. 再加上.net庫提供的支持事件的各種WEB控件, 和以前編寫(xiě)網(wǎng)頁(yè)方式相比可謂是一場(chǎng)革命. 隨著(zhù)分布式對象技術(shù)的逐漸成熟, 多層分布式應用體系結構得到了越來(lái)越多的應用. 應用系統只有向多層分布式轉變, 才能最終解決CLIENT/SERVER結構存在的問(wèn)題. 在多層架構下, 應用可以分布在不同的系統平臺上, 通過(guò)分布式技術(shù)實(shí)現異構平臺間對象的相互通信. 將應用系統集成于分布式系統之上, 能極大地提高系統的可擴展性.
在多層分布式應用中, 在客戶(hù)端和服務(wù)器之間加入了一層或多層應用服務(wù)程序, 這種程序稱(chēng)為"應用服務(wù)器". 開(kāi)發(fā)人員可以將應用的商業(yè)邏輯放在中間層應用服務(wù)器上, 把應用的業(yè)務(wù)邏輯與用戶(hù)界面分開(kāi). 在保證客戶(hù)端功能的前提下, 為用戶(hù)提供一個(gè)簡(jiǎn)潔的界面. 這意味著(zhù)如果需要修改應用程序代碼, 只需要對中間層應用服務(wù)器進(jìn)行修改, 而不用修改成千上萬(wàn)的客戶(hù)端應用程序. 從而使開(kāi)發(fā)人員可以專(zhuān)注于應用系統核心業(yè)務(wù)邏輯的分析、設計和開(kāi)發(fā), 簡(jiǎn)化了應用系統的開(kāi)發(fā)、更新和升級工作.
Microsoft.NET 為三層結構做的準備
Microsoft .NET Framework是微軟推出的一套下一代開(kāi)發(fā)平臺. .NET 基于開(kāi)發(fā)人員的角度來(lái)說(shuō)它是一個(gè)公共平臺的類(lèi)庫(FCL), 包含了近100 個(gè)命名空間(namespace)的近5000個(gè)類(lèi), 想想看這是多的強大, 還包括一個(gè)公共語(yǔ)言運行庫(CLR). 因為只要符合.NET的公共運行規范(CLS的語(yǔ)言都可以 使用它提供的強大的類(lèi), 并編譯為微軟的中間語(yǔ)言(MSIL), 在其他的應用中就可以當作一個(gè)組件來(lái)調用. 同時(shí)享受公共運行庫帶來(lái)的一切好處: 垃圾自動(dòng)回收(GC)、實(shí)時(shí)編譯(JIT)、跨語(yǔ)言互動(dòng)、跨平臺. .NET 還可比喻是操作系統提供給開(kāi)發(fā)人員的面向對像的API. ASP.net是.net中的一部分. 它最大的優(yōu)點(diǎn)除了是編譯執行速度快外, 我覺(jué)得最大的優(yōu)點(diǎn)是頁(yè)面和代碼分離的編寫(xiě)方式, 再加上.net庫提供的支持事件的各種WEB控件, 以及.NET公共平臺的類(lèi)庫(FCL), 和以前編寫(xiě)網(wǎng)頁(yè)方式相比可謂是一場(chǎng)革命.
用ASP.NET部署三層架構
ASP.NET可以使用.NET平臺快速方便的部署三層架構. ASP.NET革命性的變化是在網(wǎng)頁(yè)中也使用基于事件的處理, 可以指定處理的后臺代碼文件, 可以使用C#,VB,J#作為后臺代碼的語(yǔ)言. .NET中可以方便的實(shí)現組件的裝配, 后臺代碼通過(guò)命名控件可以方便的使用自己定義的組件. 顯示層放在A(yíng)SP頁(yè)面中, 數據庫操作和邏輯層用組件來(lái)實(shí)現, 這樣就很方便的實(shí)現了三層架構.
下面分別就各層的實(shí)現舉個(gè)制作留言簿的小例子.
我們首先在sqlserver數據庫中建一個(gè)數據庫GestDB,在GestDB中建表:Guestbook
Create table Geustbook(id int(4) unique not null,name varchar(20),content text, Primary key id);
第一步:打開(kāi)VS.NET, 點(diǎn)擊文件->>新建->>空白解決方案, 在彈出的新建項目中選擇Visal C#項目, 模板選擇ASP.NET Web應用程序.在位置處給本方案命名為geustbook.如下圖所示.
第二步:建數據庫訪(fǎng)問(wèn)控件. 單擊上圖的"確定". 在窗口右邊的 "解決方案資源管理器"中右擊"解決方案"guestbook""選擇"添加"->"新建項目", 彈出如下窗口, 如圖模板選擇類(lèi)庫, 填寫(xiě)名稱(chēng), 位置. 注意該類(lèi)庫理論上與留言簿的工程是沒(méi)有關(guān)系的, 所以存儲位置可以任意.
第三步:建立邏輯處理層. 同第二步, 建立另一個(gè)控件BusinessLayer. 此控件用來(lái)調用數據庫控件, 封裝留言簿所有的邏輯處理. 如下圖所示.
第四步:關(guān)于引用. 因為BUSINESSLAYER要用到系統的WEB控件和剛才建的DBLayer, 所以必須把二者添加引用. 右鍵點(diǎn)擊BUSINESSLAYER的"引用", 選擇.NET的"System.web.dll"雙擊選中
然后再點(diǎn)項目的"DBLayer"雙擊選中.
第五步:把GUESTBOOK ASP.NET項目跟邏輯層聯(lián)系起來(lái), 同樣使用添加引用. 注意:在BUSINESSLAYER已經(jīng)引用過(guò)DBLAYER, 在GUESTBOOK處只需引用BUSINESSLAYER就可以了.
現在你的GUESTBOOK解決方案資源管理器應該是如下圖所示:
如果不是的話(huà), 請檢查一下上面的步驟哪里是否出錯.
通過(guò)上述步驟, 就已經(jīng)成功部署了ASP.NET的三層架構. 在guestbook這一層我們放置應用顯示的ASP頁(yè)面, 在BusinessLayer層, 我們把所有的業(yè)務(wù)邏輯代碼在該層實(shí)現. DataLayer層主要處理數據庫的操作, 供BusinessLayer層調用.
只要在各個(gè)層中實(shí)現具體的類(lèi)就可以成功實(shí)施三層結構的應用程序了.
總結
本文簡(jiǎn)要描述了三層架構的軟件體系思想, 通過(guò)一個(gè)留言簿的例子主要介紹了用MS.NET部署三層結構的具體實(shí)現方法.