四、傳統三層架構與DDD分層架構html
模型是抽象的編程
現實是形象的架構
技巧是重要的設計
思想是永恆的htm
從傳統三層架構與DDD分層架構的編程演變實際上是思想的演變。 對象
傳統三層架構,即用戶界面層UI、業務邏輯層BAL、數據訪問層DAL。通常同時還有創建一個Model實體類的工程項目。DDD分層架構,即表現層UI、應用層Application、領域驅動層Doman、基礎設施層Infrastructure。blog
傳統三層架構,我一直使用、結構單1、邏輯也清晰,三層各處理各自的事務,上層向下層引用接口與方法,下層向上層提供接口服務,各層之間調度方法時可能經過Model傳值,也能夠返回值Model。但以往,我處理的業務邏輯層中,基本上都是將DAL層的接口值返回給業務邏輯層,而後BLL層再將結果返回給UI層,BLL層只作了上傳下達的做用,其它的做用發揮得較少。以往三層架構中的重點是BLL層。當我須要新增業務功能時,或者須要CRUD操做,須要將UI層、BLL層、DAL層都須要增長類文件以達處處理CRUD操做的功能。固然,傳統三層架構中,也會引入一個新的Common工程或Utility工程,爲BLL、DAL、UI提供共用或通用方法或行爲的支持。如果有須要對第三方軟件或系統提供數據接口,這時,能夠將接口做爲IIS站點或WebService 或WebAPI提供,此時這個接口能夠放在UI供第三方調用。接口
DDD分層架構,是從傳三層架構中演變過來的。它將傳統的三層架構作了必定的變動,將四個層中的內容作了從新歸內,並對分層結構的業務重點做了分配。UI層仍是UI層、應用層用於調度第三方的應用接口、以及提供口服務給第三方,同時將在應用層增長Dto工程項目用於操做應用層與UI層的數據傳遞即值對象傳遞以及Dto與Model實體類之間的映射,將傳統的BLL層、Model層概括到領域驅動層Domain中,同時將倉儲的接口層放在Domain層中,將傳統的DAL層實現以及通用的Common層或Utility層概括到基礎設施層Infrastructure中。事務
從傳統三層架構(包括Common公共層、Model實體層)演變到DDD領域驅動模型設計的分層架構,從項目概括上比較,可能多了DAL接口層即倉儲接口層,其它的工程項目只是作了位置上的遷移。同時傳統BLL層的命名變理爲Service,同時在應用層增長了Dto工程項目。get
從這種演變上能夠看出,進一步將層與層之間的耦合減低、將Dto(數據傳輸層-值對象)引入,給表現層提供了更多的數據展現的靈活性。更多演變的體驗,後續文章再敘述。
解決方案結構命名可參考http://www.cnblogs.com/lori/p/3345590.html
http://www.cnblogs.com/daxnet/archive/2010/07/07/1772584.html
http://www.cnblogs.com/daxnet/archive/2011/05/10/2042095.html