DDD 分層架構、整潔架構和六邊形架構

DDD 可以使用分層架構、整潔架構、六邊形架構、SOA 架構、REST 風格、CRQS 架構、事件驅動架構、數據網織和基於網格的分佈式計算等多種架構方式和風格。今天西二旗程序員跟大家聊聊分層架構、整潔架構和六邊形架構,幫助大家進一步瞭解 DDD。

1. DDD 分層架構

        DDD 分層架構中有很重要的依賴原則:每層只能與位於下方的層發生耦合,類似於網絡的 7 層或 TCP/IP 的 4 層模型架構,每一層各司其職,並且只關心向下一層的實現,而不會出現各層耦合。DDD 分層架構中包含四層:從上到下分別是用戶接口層,應用層,領域層和基礎層。

DDD 四層架構也基於傳統三層架構的。

不同點有以下幾方面:

2. 整潔架構(又名洋蔥架構)

        2008 年 Jeffrey Palermo 已經提出了具有分層思想的洋蔥架構,如下圖,同心圓代表軟件的不同部分,從裏向外依次是領域模型,領域服務,應用服務和外層的基礎設施和用戶終端。

        洋蔥架構根據依賴原則,定義了各層的依賴關係,越往裏依賴程度越低,代碼級別越高,越是核心能力。外圓代碼依賴只能指向內圓,內圓不需要知道外圓的情況,這種架構也是典型的分層架構,和 DDD 分層架構一樣,都體現了高內聚,低耦合的設計特性。洋蔥架構也常作爲指導微服務設計的重要架構之一。

3. 六邊形架構

        2005 年 Alistair Cockburn 提出了六邊形架構,在這個架構中,將應用分爲內六邊形和外六邊形兩層,內六邊形實現應用的核心業務邏輯。外六邊形完成外部應用,基礎資源等的交互和訪問,對於與不同的外部系統交互,由外六邊形的適配器負責協議轉換,保證內六邊形業務邏輯的乾淨。

        這種架構也是典型的分層架構,和 DDD 分層架構一樣,都體現了高內聚,低耦合的設計特性。六邊形也常作爲指導微服務設計的重要架構之一。

4. DDD 分層協作

       DDD 各層的主要職責和怎麼分工協作如下圖:

今天就給大家分享這些,感謝關注和支持。掃碼關注【西二旗程序員】,不迷路。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/YoGMbICYUWz49u0aPuSqDg