上一篇我們講了DDD的核心概念(附上鏈接),并且設計了我們的上下文映射圖,那么接下來就準備開始立項了,本篇文章的部分知識點可能對一部分人來說比較基礎,可以選擇性的閱讀。
在這之前我們平常用的最多的應該就是3層架構了,這里也不展開描述了,大家都是在3層的陪伴下一路走來的~
DDD所使用的傳統(tǒng)分層架構是松散分層,也就是上層可以訪問任意層級的下層,而不是僅限于當前層的下一層,這是有別于3層架構的。如下面2張圖的區(qū)別圖:
【圖1】
【圖2】
Application:這層的職責是對接收到的數(shù)據(jù)做一些非業(yè)務性驗證,事務的控制,最重要的是協(xié)調(diào)多個聚合之間的操作。這里應該可以清晰的表達出整個操作所做的事情,并且與通用語言是一致的。
Domain:這一層是DDD設計的核心,這里不但需要精確合理的表達出通用語言的每一個細節(jié),另外如何把對象合理的定義為聚合、實體、值對象也是重中之重。這里不但關系著整個項目的復雜度,也是戰(zhàn)術建模的體現(xiàn),任何的一行代碼都是對業(yè)務的準確定義,應該是恰到好處。一個清晰簡潔的戰(zhàn)術建模才可以應對后續(xù)的快速變化。
Infrastructure:這里是輔助性的一層,也是整個項目的基礎。好比這里存放著一磚一瓦,最終建造什么模樣的高樓在于用它的地方。主要包括,倉儲的實現(xiàn)(我們存放數(shù)據(jù)的地方)、一些通用的支撐性類庫。
二、六邊形架構