DDD
DDD(Domain-Driven Design 領域驅動設計)是由Eric Evans最先提出,目的是對軟件所涉及到的領域進行建模,以應對系統規模過大時引起的軟件複雜性的問題。整個過程大概是這樣的,開發團隊和領域專家一起通過 通用語言(Ubiquitous Language)去理解和消化領域知識,從領域知識中提取和劃分爲一個一個的子領域(核心子域,通用子域,支撐子域),並在子領域上建立模型,再重複以上步驟,這樣週而復始,構建出一套符合當前領域的模型。
領域驅動設計(DDD) 是一種通過將實現連接到持續進化的模型來滿足複雜需求的軟件開發方法. 領域驅動設計的前提是:
- 把項目的主要重點放在覈心領域和領域邏輯上
- 把複雜的設計放在領域模型上
- 發起技術專家和領域專家之間的創造性協作,以迭代方式完善解決特定領域問題的概念模型
分層
ABP框架遵循DDD原則和模式の分層
- 表示層: 爲用戶提供接口. 使用應用層實現與用戶交互.
- 應用層: 表示層與領域層的中介,編排業務對象執行特定的應用程序任務. 使用應用程序邏輯實現用例.
- 領域層: 包含業務對象以及業務規則. 是應用程序的核心.
- 基礎設施層: 提供通用的技術功能,支持更高的層,主要使用第三方類庫.
對比DDD的分層
https://www.jianshu.com/p/b0379067c978
https://docs.abp.io/zh-Hans/abp/latest/Domain-Driven-Design