MVC實用架構(gòu)設(shè)計:總體設(shè)計
一、前言
一直以來都想寫這個系列,但基于各種理由(主要是懶惰),遲遲沒有動手。今天,趁著周末的空檔,終于把系列的目錄公布出來了,算是開個頭,也給自己一個堅持寫博客的理由吧。
這個架構(gòu)是從我近期在做的一個項目中剝離出來的,這個項目由我從0開始一手搭建,在整個過程中不斷學(xué)習(xí)(在博客園中參考了很多大牛的作品)與思考中不斷完善,項目的結(jié)構(gòu)也從一個普通的類PetShop三層結(jié)構(gòu)演變成了現(xiàn)在這樣,一切以實用為目的,所以項目的改造過程中并不太嚴格遵守傳統(tǒng)三層的定義,這個在下篇《項目結(jié)構(gòu)搭建》及以后的系列文章中都會提及到,也會與傳統(tǒng)三層結(jié)構(gòu)進行對比。
寫這個系列的目的之一也是想把當前項目的架構(gòu)抽象出來,以希望得到高手大牛們的指點,指出不足之處,以求發(fā)展改進。
本系列使用的開發(fā)環(huán)境為:Windows 7 SP1、 Visual Studio 2012 (Update2)、TFS2012 (微軟TFS云服務(wù))、SQL Server 2008+,并使用 Resharper 7.1 進行代碼優(yōu)化。
上圖是本構(gòu)架的設(shè)計圖,縱向中間一列為架構(gòu)主體部分,兩邊的小列為周邊的依賴項,如果橫向有交集,則說明主體部分對周邊存在依賴。比如 GMF.Demo.Core.Data依賴于Domain Models與EntityFramework,但GMf.Demo.Site.Web與GMF.Demo.Site對Entityframework不存在依賴。同樣,Log模塊也僅為GMF.Demo.Site.Web服務(wù)等等,這些在下面的結(jié)構(gòu)說明中也會詳加說明。
- Infrastructure(基礎(chǔ)設(shè)施層):提供系統(tǒng)中與業(yè)務(wù)無關(guān)的基礎(chǔ)設(shè)施功功能
- GMF.Component.Tools:工具組件,提供通用輔助操作功能,擴展方法,異常定義,日志記錄定義與實現(xiàn)等功能
- GMF.Component.Data:數(shù)據(jù)組件,提供與業(yè)務(wù)無關(guān)的EF數(shù)據(jù)上下文,單元操作,倉儲操作,EF二級緩存等功能的定義與實現(xiàn)
- Core (業(yè)務(wù)核心層):提供與業(yè)務(wù)實體密切相關(guān)的業(yè)務(wù)功能
- GMF.Demo.Core.Models:業(yè)務(wù)實體模型,定義用于系統(tǒng)核心業(yè)務(wù)實現(xiàn)的數(shù)據(jù)模型的定義
- GMF.Demo.Core.Data:業(yè)務(wù)數(shù)據(jù)訪問定義與實現(xiàn):提供與業(yè)務(wù)相關(guān)的數(shù)據(jù)訪問功能的實體映射,數(shù)據(jù)遷移,倉儲操作的定義與實現(xiàn)
- GMF.Demo.Core:業(yè)務(wù)核心功能定義與實現(xiàn):提交與客戶端(網(wǎng)站,桌面端,移動端)無關(guān)的業(yè)務(wù)邏輯的實現(xiàn),業(yè)務(wù)核心層主要特征如下:
- 此層是業(yè)務(wù)邏輯處理的核心,數(shù)據(jù)載體為業(yè)務(wù)實體
- 此層所有類為抽象類,需要在相應(yīng)的客戶端(網(wǎng)站,桌面端,移動端)進行繼承后才能被展現(xiàn)層調(diào)用
- 此層要做到客戶端(網(wǎng)站、桌面端、移動端)狀態(tài)(如網(wǎng)站的Cookie,Session等)無關(guān)性,所有客戶端特有的業(yè)務(wù)都要在相應(yīng)的派生層中進行處理,轉(zhuǎn)換為狀態(tài)無關(guān)后再調(diào)用此層進行運算
- 對于不同客戶端(網(wǎng)站、桌面端、移動端)的數(shù)據(jù),只需要轉(zhuǎn)換為業(yè)務(wù)實體即可調(diào)用此層代碼進行運算,解決相同業(yè)務(wù)在不同客戶端代碼重復(fù)的問題
- Application (站點應(yīng)用層)
- GMF.Demo.Site.Models:網(wǎng)站業(yè)務(wù)視圖模型:定義用于網(wǎng)站業(yè)務(wù)實現(xiàn)的視圖模型的定義
- GMF.Demo.Site:網(wǎng)站業(yè)務(wù)實現(xiàn),此項目繼承于GMF.Demo.Core,主要職能如下:
-
- 對業(yè)務(wù)執(zhí)行權(quán)限進行檢查
- 負責把從網(wǎng)站接收的業(yè)務(wù)視圖實體轉(zhuǎn)換為核心業(yè)務(wù)模型,傳給業(yè)務(wù)核心層進行業(yè)務(wù)處理
- 處理與Http密切相關(guān)的數(shù)據(jù)(Session、Cookie等),處理成與Http狀態(tài)無關(guān)后再交由核心層進行處理
- Presentation (展現(xiàn)層)
- GMF.Demo.Client.Consoles:業(yè)務(wù)控制臺,可對功能代碼段,核心業(yè)務(wù)等功能進行調(diào)用測試。
- GMF.Demo.Site.Web:網(wǎng)站UI展現(xiàn)
- 對Action執(zhí)行權(quán)限進行檢查
- 接收用戶輸入并轉(zhuǎn)交給站點業(yè)務(wù)層進行處理
- 記錄功能操作的日志記錄與異常日志
原文鏈接:http://www.cnblogs.com/guomingfeng/archive/2013/05/19/mvc-overall-design.html