.NET三層架構(gòu)應(yīng)用之十層框架
凡是接觸.net開發(fā)的,***要理解的就是三層架構(gòu)的重要思想。關(guān)于三層架構(gòu)的概述 我就不多說了,相信大家都早已明白。
三層架構(gòu)(3-tier application) 就是將整個業(yè)務(wù)應(yīng)用劃分為:表現(xiàn)層(UI)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)。
區(qū)分層次的目的即為了“高內(nèi)聚,低耦合”的思想。
1、表現(xiàn)層(UI):通俗講就是展現(xiàn)給用戶的界面,即用戶在使用一個系統(tǒng)的時候他的所見所得。
2、業(yè)務(wù)邏輯層(BLL):針對具體問題的操作,也可以說是對數(shù)據(jù)層的操作,對數(shù)據(jù)業(yè)務(wù)邏輯處理。
3、數(shù)據(jù)訪問層(DAL):該層是直接操作數(shù)據(jù)庫的,針對數(shù)據(jù)的增添、刪除、修改、更新、查找等。
各層關(guān)系如下圖所示:
我進入公司之后,所接觸的項目都是建立在十層框架的基礎(chǔ)之上。所謂十層框架 其實就是三層架構(gòu)的具體應(yīng)用。
增加了網(wǎng)絡(luò)通訊層,實現(xiàn)遠程調(diào)用。服務(wù)端運行著Windowsservice 來產(chǎn)生數(shù)據(jù)訪問層的對象提供給客戶端請求調(diào)用。
這樣處理,使得整個C/S模式中,一旦底層方法發(fā)生變動時,只需要更新服務(wù)器上相應(yīng)的dll,而不需要客戶端主機同步更新,
減少了維護成本。
下面說下十層架構(gòu)中,每層的作用以及層與層之間的關(guān)系。
0L層:即啟動層。用來控制畫面層中主畫面的啟動。這層最簡單,沒有太多代碼。
namespace CompanyName.Application.UI。
1U層:即畫面UI層。創(chuàng)建用戶界面。namespace CompanyName.Application.UI。
2C層:即畫面邏輯層。處理與畫面相關(guān)的邏輯控制,封裝下層方法供UI層使用。
namespace CompanyName.Application.Controller。
3E層:即畫面實體類層。根據(jù)畫面設(shè)計相應(yīng)的實體類或者枚舉類型。
namespace CompanyName.Application.Entity。
4A層:即業(yè)務(wù)邏輯層。業(yè)務(wù)邏輯的處理,以及上下層之間數(shù)據(jù)的轉(zhuǎn)換。屬于中間層。
namespace CompanyName.Application.Access。
5G層:即網(wǎng)絡(luò)層,也稱遠程調(diào)用層。獲取遠程服務(wù)器上的對象,進行遠程調(diào)用。
namespace CompanyName.Application.Remoting.Mediation。
6O層:即接口層。定義接口,用來規(guī)范數(shù)據(jù)訪問層的方法設(shè)計。可以對子類進行封箱和拆箱,也便于網(wǎng)絡(luò)傳輸。
namespace CompanyName.Application.Remoting.Interface。
7D層:即數(shù)據(jù)庫實體類。這一層所定義的類,是完全按照數(shù)據(jù)庫中表結(jié)構(gòu)來定義屬性的。與3E層不同在于,
3E層類中具有一些類方法,比如Clone();Compare();Equals();等。而D層則除了get {}set{} 方法之外的額外方法。
namespace CompanyName.Application.Remoting.ParamData。
8P層:即數(shù)據(jù)庫邏輯層。繼承O層接口,封裝R層方法。處理一些數(shù)據(jù)序列化轉(zhuǎn)換。
namespace ThreeHigh.Application.Remoting.Bussiness。
9R層:即數(shù)據(jù)庫訪問層。直接訪問數(shù)據(jù)庫,針對數(shù)據(jù)的增添、刪除、修改、更新、查找等。
namespace CompanyName.Application.Remoting.DAO。
具體項目中一本程序的框架如下圖所示。
因為公司的程序都是與公司的數(shù)據(jù)庫有關(guān)的,而且有調(diào)用了很多共通的類與方法,沒辦法單獨運行,所以程序源代碼就不再上傳了。
我覺得關(guān)鍵的技術(shù)主要在遠程調(diào)用對象和服務(wù)器生成對象。
原文:http://www.cnblogs.com/KeiyouNo/archive/2012/02/02/Ten.html
【編輯推薦】