DDD—領域模型映射代碼結構


一、一級代碼目錄
         前面《DDD—分層架構,洋蔥架構,六邊形架構》一文中講到,領域模型的業務邏輯從領域層,應用層到用戶接口層逐層組合和封裝,對外提供靈活的服務,既實現了各層的分工和解耦,也實現了各層的協作,DDD分層架構是微服務代碼結構的最佳落地。
   

   

 

  根據DDD的分層架構,我們可以首先根據各層的單一職責定義一級目錄(各層具體的職責見《DDD—分層架構,洋蔥架構,六邊形架構》)如下圖:
   interfaces:用戶接口層
   application:應用層
   domain:領域層
   infrastructure:基礎層
  
 
二、各層代碼目錄
      用戶接口層:interfaces目錄下的代碼目錄結構有assembler,dto和facade三類
     assembler:實現前端傳輸數據到后端的載體DTO和DO領域對象的轉換,assembler都是和DTO和DO一起出現
     dto:前端傳輸數據到后端的載體,不實現任何業務邏輯
     facade:封裝應用服務,提供粗粒度的調用接口
    
 
     應用層:application目錄下的代碼目錄結構有event的訂閱和發布,編排領域層的應用service,同時應用層負責與外部微服務交互,可能有DTO和DO的轉換過程,需要Assembler的參與
    event.publish:存放事件發布的代碼
    event.subscribe:存放事件訂閱的代碼
    service:應用服務,對多個領域服務和外部微服務調用的封裝,編排和組合,對用戶接口層提供流程上的核心業務邏輯
 
  
     領域層:domain目錄下是由一個或多個獨立的聚合目錄構成,每一個聚合是一個獨立的業務功能單元,多個聚合共同實現領域模型的核心業務邏輯,聚合文件夾可以以聚合名稱命名,聚合內包含entity,event,repository和service四個子目錄。
    entity:存放聚合根,實體和值對象
    event:存放事件實體,以及事件的具體業務邏輯實現
    service:存放跨聚合編排的領域服務,以及PO和DO轉換和初始化用的工廠
    repository:一個聚合只能有一個倉儲,倉儲一般包含倉儲接口和倉儲實現。同事倉儲還會有DAO代碼的具體實現
    
    
      基礎層:主要存放配置信息config和各種第三工具,API,組件集成的工具類utils
    
 
      領域模型映射成微服務代碼結構的最終目錄組織結構如下:
    
 
 
  

  參考書籍 ——《基於DDD和微服務的中台架構與實現》歐創新、鄧頔
  參考書籍 ——《領域驅動設計》Eric Evans
  參考書籍 ——《架構真經》Martin L. Abbott


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM