<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          三層架構(gòu)到DDD分層架構(gòu)的演變

          共 1164字,需瀏覽 3分鐘

           ·

          2022-09-17 15:16

          三層架構(gòu)

          傳統(tǒng)的三層架構(gòu)主要分為業(yè)務(wù)接口層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層

          • 業(yè)務(wù)接口層:主要是API的定義,包括資源路徑定義、請(qǐng)求報(bào)文接受、響應(yīng)報(bào)文返回、請(qǐng)求編碼等定義的內(nèi)容;

          • 業(yè)務(wù)邏輯層:主要做業(yè)務(wù)邏輯處理,這一層包括數(shù)據(jù)映射DTO轉(zhuǎn)VO,業(yè)務(wù)核心邏輯編寫,組合不同數(shù)據(jù)倉庫,做業(yè)務(wù)邏輯;

          • 數(shù)據(jù)訪問層:主要做數(shù)據(jù)存儲(chǔ),包括數(shù)據(jù)映射VO轉(zhuǎn)PO,數(shù)據(jù)接口的定義,映射XML的編寫。

          DDD分層架構(gòu)

          DDD分層架構(gòu)也可以叫四層架構(gòu),主要由用戶接口層、應(yīng)用層、領(lǐng)域?qū)印⒒A(chǔ)層;

          • 用戶接口層:負(fù)責(zé)向用戶顯示信息和解釋用戶指令,比如用戶、程序、自動(dòng)化腳本、批處理腳本等;

          • 應(yīng)用層:主要用于協(xié)調(diào)多個(gè)聚合的服務(wù)和領(lǐng)域?qū)ο笸瓿煞?wù)編排和組合,可以調(diào)本地也可以調(diào)遠(yuǎn)程的服務(wù)、包括權(quán)限驗(yàn)證、事務(wù)控制、防重冪等,不要把核心的業(yè)務(wù)邏輯放到這里;

          • 領(lǐng)域?qū)樱簩?shí)現(xiàn)核心邏輯,包括聚合根、實(shí)體、值對(duì)象、領(lǐng)域服務(wù),包括業(yè)務(wù)擴(kuò)展點(diǎn)、校驗(yàn)規(guī)則、組合聚合服務(wù)等相關(guān)功能;

          • 基礎(chǔ)層:提供通用的技術(shù)和基礎(chǔ)服務(wù),包括一些第三方工具類、緩存、數(shù)據(jù)庫、文件等,采用依賴倒置的設(shè)計(jì),于其他層解耦。

          演變

          三層架構(gòu)向DDD架構(gòu)演變,主要發(fā)生在邏輯層和數(shù)據(jù)庫訪問層

          • 新增DTO,給前端數(shù)據(jù)可用性更高,更靈活;

          • 三層架構(gòu)的業(yè)務(wù)邏輯層改為應(yīng)用層和領(lǐng)域?qū)?,使得業(yè)務(wù)邏輯不混亂,應(yīng)用快速響應(yīng)前端的變化;

          • 基礎(chǔ)層和數(shù)據(jù)訪問層的設(shè)計(jì)變化,通過依賴倒置實(shí)現(xiàn)基礎(chǔ)設(shè)置對(duì)基礎(chǔ)資源的解耦,應(yīng)對(duì)主流技術(shù)的變化。

          項(xiàng)目結(jié)構(gòu)

          用戶接口層

          Assembler:DTO與實(shí)體對(duì)象相互轉(zhuǎn)換和數(shù)據(jù)交換,與DTO同時(shí)出現(xiàn);
          Dto:數(shù)據(jù)傳輸載體,DTO可以將領(lǐng)域?qū)ο笈c外界隔離;
          Facade:粗接口粒度定義,將請(qǐng)求給多個(gè)應(yīng)用服務(wù)處理;

          應(yīng)用層

          • event:主要存放事件相關(guān)代碼,包括兩個(gè)子目錄publishsubscribe,放發(fā)布訂閱相關(guān)代碼,這里可以領(lǐng)不同領(lǐng)域服務(wù)訂閱也可以是微服務(wù)之間的訂閱;

          • service:應(yīng)用服務(wù),主要對(duì)外部的服務(wù)進(jìn)行封裝、編排和封裝,提供粗粒度的服務(wù),也是一段獨(dú)立的業(yè)務(wù)邏輯

          領(lǐng)域?qū)?/h2>
          • Aggregate:聚合軟件包的根目錄,根據(jù)聚合的名稱命名,里面可以定義實(shí)體、聚合根、實(shí)體、值對(duì)象以及領(lǐng)域服務(wù),可以獨(dú)立拆分成微服務(wù);

          • Entity:存放聚合根、實(shí)體、值對(duì)象、工廠模式相關(guān) 代碼,統(tǒng)一實(shí)體的相關(guān)邏輯,都放在該類中,采用充血模式;

          • Event:存放事件實(shí)體以及事件活動(dòng)相關(guān)的邏輯代碼;

          • Service:領(lǐng)域服務(wù),根據(jù)不同的實(shí)體組合的業(yè)務(wù)邏輯;

          • Repository:存放聚合查詢和持久化領(lǐng)域?qū)ο蟮拇a;

          基礎(chǔ)層

          • Config:主要存放配置相關(guān)代碼,比如springboot自動(dòng)配置內(nèi)和集成第三方組件的配置;

          • Util:主要存放平臺(tái)、開發(fā)框架、消息、數(shù)據(jù)庫、緩存、文件、總線、網(wǎng)關(guān)、第三方類庫、通用算法等基礎(chǔ)代碼,你可以為不同的資源類別建立不同的子目錄;

          示例代碼


          瀏覽 19
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  狠狠撸夜夜撸 | 亚洲成人网在线观看 | 亚洲欧美视频一区 | 国产操网 | 91蝌蚪91 |