三層架構對于開發人員來說,已經是司空見慣了,除了大型與超小型項目外,大多都是這種架構來進行開發。
在這里為初學者們簡單介紹一下三層架構:
(下面內容摘自《趣味理解:三層架構與養豬—《.NET深入體驗與實戰精要》》,這是以前看到的關于三層架構介紹,覺得挺經典的,大家有時間的話認真看看)

對比以上兩圖,我們可以看出: 1)數據庫好比豬圈 ,所有的豬有序地按區域或編號,存放在不同的豬欄里。 2)DAL 好比是屠宰場 ,把豬從豬圈取出來進行(處理)屠殺,按要求取出相應的部位(字段),或者進行歸類整理(統計),形成整箱的豬肉(數據集),傳送給食品加工廠( BLL )。本來這里都是同一伙人既管抓豬,又管殺豬的,后來覺得效率太低了,就讓一部分人出來專管抓豬了( DBUtility ),根據要求來抓取指定的豬。 3)BLL 好比食品加工廠 ,將豬肉深加工成各種可以食用的食品(業務處理)。 4)Web 好比商場 ,將食品包裝成漂亮的可以銷售的產品,展現給顧客( UI 表現層)。 5)豬肉好比 Model ,無論是哪個廠(層),各個環節傳遞的本質都是豬肉,豬肉貫穿整個過程。 6)通用類庫 Common 相當于工人使用的各種工具,為各個廠(層)提供諸如殺豬刀、繩子、剪刀、包裝箱、工具車等共用的常用工具(類)。其實,每個部門本來是可以自己制作自己的工具的,但是那樣會使效率比較低,而且也不專業,并且很多工作都會是重復的。因此,就專門有人開了這樣的工廠來制作這些工具,提供給各個工廠,有了這樣的分工,工廠就可以專心做自己的事情了。
我們的框架結構
接下來要和大家一起開發的是基于SubSonic3.0 ORM插件的框架,關于SubSonic3.0的具體介紹將會在下一章節詳細說明。
在此要向大家聲明的是,本框架主要應用于中小型項目,對于并發量非常大、對性能要求非常高的和有完美傾向的開發人員(如開發中必須統一使用一種開發結構,要求三層架構必須使用面向對象的朋友),請拐彎,因為本框架可能不符合你的審美觀。
本框架不會完全使用面向對象的方式來進行開發,本框架追求的思想是合適與快捷。即在合適的地方使用適合的插件或技術,整個框架完成后添加新功能、做二次開發或維護時,能方便快捷(速度流)。
比如該用存儲過程實現的業務邏輯,就不用強制使用代碼來實現,因為有些邏輯使用代碼來實現,無論在開發時間、代碼量、并發處理、性能上都與存儲過程處理沒法比;在需要使用ADO.NET來執行SQL語句時,就不會為了統一框架底層調用方法,強制使用SubSonic插件的相關方法來實現,如果你看到這種代碼心理很不舒服的話,那只能說我們不在一個頻道上,對于我這種實用型開發者來說,所追求的編程模式方向可能與你不同。
下圖是本框架的擴展結構發給大家參考一下,以后的章節重點講解的是紅框框住的幾個項目,詳細講述本框架底層架構是怎么搭建的,指導初學者們一步步搭建好自己的框架架構。
對比前面的三層架構,大家可能會很奇怪,怎么沒有看到Model層的?這是因為我們使用的SubSonic3.0插件所附帶的效果,該插件附帶的T4模板所生成的Model與DAL混合在一起,很難進行分開。SubSonic插件為了實現更新數據的時候,自動將它所生成的SQL語句剔除掉未賦值字段,只更新已賦值的字段內容,而對實體類的Set進行了改造(如下圖)。(注:常見的SQL語句生成框架是沒有這種過濾功能)

這樣處理將會減少更新數據長度,減少對實體類字段賦值操作(對使用默認值的字段不用再進行賦值操作),減少代碼工作量。例如:有些訂單表里有幾十個字段,其中大部分在創建時使用默認值就可以了,這時只需要對需要的幾個字段賦值即可。
框架各項目功能說明
| 序號 | 名稱 | 說明 |
| 1 | Solution.Common | 公共函數類 |
| 2 | SubSonic.Core | SubSonic3.0.0.4插件源碼 |
| 3 | Solution.Dataaccess | 數據訪問層 |
| 4 | Solution.Logic.Managers | 業務邏輯層 |
| 5 | Solution.Web.Managers | UI層(后臺管理系統) |
各層之間調用說明 1) Solution.Commom,主要存放系統要調用到的各種常用工具函數,給其他所有層調用。 2) SubSonic.Core,SubSonic3.0插件源碼,主要負責與數據庫進行交互,將業務轉換成相應的SQL語句,對數據庫進行各種增、刪、改、查等操作; 3) Solution.DataAccess,主要存放T4模版生成的業務實體(Model)、數據庫表結構、業務實體常用函數、存儲過程調用函數,以及已封裝好的各種數據庫操作函數和ADO.NET數據庫執行函數; 4) Solution.Logic.Managers,主要存放各種業務邏輯函數,其中SubSonic文件夾里的文件是由T4模版自動生成的常用邏輯函數(會將UI層所要用到的80%以上的函數自動生成出來)。這些邏輯函數主要是接收UI層的操作命令與參數,進行邏輯運算和處理后,提交給Solution.DataAccess層來處理,以實現對數據庫表記錄的增、刪、改、查等操作; 5) Solution.Web.Managers層是UI層,用來展示管理系統的各個頁面與功能。主要實現和用戶的交互,接收用戶請求或展示用戶請求的數據結果。
版權聲明: 本文由AllEmpty原創并發布于博客園,歡迎轉載,未經本人同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。如有問題,可以通過1654937@QQ.com 聯系我,非常感謝。
發表本編內容,只要主為了和大家共同學習共同進步,有興趣的朋友可以加加Q群:327360708 或Email給我(1654937@qq.com),大家一起探討。
更多內容,敬請觀注博客:http://m.survivalescaperooms.com/EmptyFS/
新聞熱點
疑難解答