翟自強
【摘要】隨著ASP.NET應用的普及,越來越多的軟件系統采用ASP.NET技術。然而很多中小WEB應用都采用不分層的方式進行開發,導致了代碼的混亂。為日后的維護工作帶來了極大的困難。本文闡述了ASP.NET三層架構的優點和如何構建三層架構。
【關鍵詞】表示層(PL)業務邏輯層(BLL)實體(Entity)數據訪問層(DAL)
一、三層架構概述
所謂三層架構中的三層,指的是表示層(PL)、業務邏輯層(BLL)和數據訪問層(DAL):數據訪問項目執行從數據庫(或其他數據服務)獲取數據或向數據庫發送數據的功能。在分布式應用程序結構中,相應功能使用ADO. NET數據適配器和SQL服務器存儲過程來完成。業務規則項目包含業務對象本身以及應用于它們的規則。這也是主要業務對象所在的位置。它們實現業務實體或系統對象。系統的業務規則將在這些對象中編碼,盡管部分業務規則可能實際上已在數據庫的存儲過程和觸發器中進行了編碼。
用戶界面項目是指在應用程序中實現的客戶端。在分布式應用程序結構中,用戶服務可以是Web客戶端或Windows客戶端,這具體取決于特定的應用程序。例如,在開發Web應用程序時,可能需要提供具有標準Windows用戶界面或Web用戶界面。
二、三層架構優點
在三層架構的軟件系統中,表示層(PL)即用戶界面(UI)、業務邏輯層(BLL)和數據訪問層(DAL)之間是相對獨立的。相鄰的兩層之間產生一定的聯系(即耦合),隔層是不會產生影響的。這樣當任何一層發生改變的時候,只需做簡單的調整就可以了。降低了變更所帶來的影響,為后續的系統維護工作提供了便利。
三、三層架構實例
下面將仍以“用戶登陸”為例,講述如何搭建三層架構的應用系統。
(一)在VS2008中搭建解決方案“MySchoolPro”。(1)在VS2008中建立名為“MySchoolPro”的解決方案;(2)建立名為“MySchool”的WEB項目;(3)建立名為“DAL”的類庫項目;(4)建立名為“BLL”的類庫項目;(5)在“BLL”項目中添加“DAL”引用;(6)在“MySchool”中添加“BLL”引用。
(二)在“DAL”中加入微軟的ADO封裝類“SqlHelper”;SqlHelper是一個基于.NET Framework的數據庫操作組件。組件中包含數據庫操作方法。
(三)添加實體類User。實體類是對業務實體的抽象、封裝,它與數據庫中的實體表相對應。實體類User中不但包含了構造函數、私有成員和屬性,也包含了與該實體相關的行為。在沒有實體類的情況下,數據的傳輸只能依靠DataSet。然而在DataSet中數據是以關系數據的形式存在,不具備OO的特點。對DataSet操作的代碼往往散落在BLL或UI之中,容易造成代碼的混亂。添加實體類之后各層之間都依靠實體來進行消息傳遞,從而彌補了上述的不足。
下面將實體類(User)加入到解決方案“MySchoolPro”中:(1)在“MySchoolPro”中建立名為“Model”的類庫項目;(2)在“Model”中添加“DAL”引用;(3)在“MySchool”中添加“Model”引用;(4)在“Model”中加入User實體類(代碼同上)。
實體貫穿整個系統,成為系統的業務基礎。這里需要加以區別的是業務實體層(Model)和業務邏輯層(BLL)之間的關系。業務實體層(Model)體現了業務域在系統的抽象;業務邏輯層(BLL)則實現為復雜邏輯提供服務。換句話說,業務邏輯層(BLL)實現了業務實體的組合調用。
(四)建立登陸頁面
由于“用戶登陸”功能僅涉及到用戶實體,所以不會在業務邏輯層(BLL)中編碼。下面在“MySchool”中建立Login.aspx,用戶登錄成功后跳轉到Default.aspx;否則提示用戶名密碼錯誤。
四、結語
三層架構中包括:表示層(UI)、業務邏輯層(BLL)、數據訪問層(DAL),每層功能明確、相對獨立,層與層之間相互隔離,體現了“低耦合、高內聚”的設計思想。
參考文獻
[1]梁立新著.項目實踐精解·ASP.NET應用開發:基于ASP.NET、C#和ADO.NET的三層架構案例分析.電子工業出版社,2010年
[2] Matthew MacDonald著. ASP.NET高級程序設計.人民郵電出版社,2011年
[3] Christian Thilmany. NET模式:架構設計與過程.中國電力出版社
[4] Jeffrey Richter. Microsoft. NET框架程序設計.清華大學出版社
[5] Martin L. Shoemaker UML實戰教程.清華大學出版社