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