領域驅動設計之體系架構模式互動過程與最佳實踐

2022-06-03 20:36:08 字數 820 閱讀 1084

上一文主要講了ddd體系架構以及每一層主要的作用,這篇主要描述各層之間如何進行互動,以及互動的最佳實現方式。

1.應用層某個應用層服務被介面層呼叫,開始啟動。

2.對於需要新增領域物件的情況,應用層呼叫領域層中某個領域物件(聚合根)的建構函式或工廠建立出領域物件,然後呼叫領域物件的某些方法進行相關的業務操作,操作完成後,應用層服務將新建立的領域物件新增到倉儲中。

3.對於需要修改領域物件的情況,應用層服務通過倉儲獲取領域物件,然後呼叫領域物件的某些方法進行相關的業務操作,操作完成後,應用層服務將新修改的領域物件新增到倉儲中。

4.如果乙個操作設計到多個領域物件,則應用層服務呼叫領域層的某個領域服務完成操作。

5.最後通知工作單元將倉儲中的領域物件以事務的方式持久化到資料庫中。

在實際的開發經驗中,有以下幾點需要特別說明:

1.一般通過應用層訪問倉儲,而且是使用領域層定義的倉儲介面,具體倉儲的實現呼叫可以通過ioc的機制在應用層通過服務定位器模式找到。

2.一般不要再領域層訪問倉儲,如果領域層中的領域物件或領域服務的業務邏輯處理確實需要訪問倉儲,建議不通過服務定位器的方式在領域層進行服務解析,而是應該在領域物件或領域服務的建構函式中傳入倉儲介面,具體是哪個倉儲實現仍然在應用層通過服務定位器模式找到,這樣能夠保證領域層只關注業務,而不關注其他的方面。

3.一些介面需要獲取的查詢資訊,不應該通過領域物件直接返回給應用層服務,然後應用層服務返回給介面。通常介面需要的資訊可能**於領域物件的一部分狀態,也有可能**於多個領域物件的組合,這時應該在應用層實現dto。dto定義的就是介面所需要顯示的狀態,應用層服務應該能夠將dto與領域物件間作對映、組合或轉換,以更好的實現介面資訊的展示。

DDD領域驅動架構模式

上層 接入層 api層 聚合模組 基礎模組 下層 分層規則 元件名稱 職責entity 實體承載了本領域的所有業務邏輯。實體包含屬性和行為。對乙個領域進行抽象可能會形成多個實體,甚至巢狀的實體 factory 工廠負責將原始資料轉換成實體。原始資料報含 倉庫從資料來源取回的資料 外部傳入的資料 jo...

分層體系架構模式

一般資訊系統中最常見的是如下所列的4層。使用場景 注意每一層都是封閉的.這意味著request必須經過每一層才能到達最底下一層.為什麼不允許展示層直接訪問資料庫層呢,這樣不是更快嗎?這就是分層架構的另乙個特徵 層隔離 layers of isolation 層隔離的概念意味著你對任何一層的改變都不會...

企業應用架構模式 之 領域邏輯模式

企業應用架構模式 之 領域邏輯模式 領域邏輯的組織可以分為三種主要的模式 事務指令碼,領域模型,表模組。面向過程的開發模式 事務指令碼 事務指令碼是這樣乙個過程開發邏輯 從表示層獲得輸入,進行校驗和計算處理,將資料儲存回資料庫中,以及呼叫其他系統的操作等。然後,該過程將更多的資料返回給表示層,中間可...