課程簡介
本課程基于多年實踐領(lǐng)域驅(qū)動設(shè)計的經(jīng)驗與心得,糅合了 DDD 社區(qū)最新發(fā)展的理論知識與最佳實踐,覆蓋從需求到實現(xiàn)全面系統(tǒng)的講解領(lǐng)域驅(qū)動設(shè)計。本篇是實戰(zhàn)篇,
目標收益
學員通過課程,可以深入學習到企業(yè)級N層的框架實現(xiàn)原理。每一層的職責以及功能目標,DDD中的核心戰(zhàn)術(shù)概念及工具,比如:領(lǐng)域服務(wù),領(lǐng)域事件,資源庫,聚合,實體,值對象。以及DDD的戰(zhàn)略建模工具,如:界限上下文,上下文映射圖。以及對于以上這些概念,在代碼層面的設(shè)計于實現(xiàn)。
培訓(xùn)對象
具有以下經(jīng)驗的 架構(gòu)師,后端開發(fā)工程師,以及其他軟件從業(yè)人員具有基礎(chǔ)的架構(gòu)設(shè)計知識
至少掌握一門面向?qū)ο笳Z言
具有基本的面向?qū)ο蟪绦蛟O(shè)計能力
具有一年或一年以上的業(yè)務(wù)系統(tǒng)開發(fā)經(jīng)驗
課程大綱
一、實體 – 數(shù)據(jù)容器還是行為載體 |
1.貧血模型 2.如何避免貧血,實體與領(lǐng)域服務(wù)之間的分寸 3.唯一標識 4.委派標識 5.案例:實現(xiàn)實體層超類型(Layer Supertype) 6.實戰(zhàn) - 任務(wù)分配執(zhí)行系統(tǒng) 實體行為歸屬甄別 |
二、值對象 – 性能提升小幫手 |
1.什么是值對象 2.值對象的特征 3.為什么值對象這么容易被忽略 4.案例:地址建模與值對象 5.案例:實現(xiàn)值對象層超類型 |
三、聚合 – 比類更高一層的封裝 |
1.聚合設(shè)計原則 2.聚合設(shè)計的過程 3.聚合的一致性邊界 4.一個事務(wù)中只處理一個聚合 5.UML 中的聚合 與 DDD 中的聚合 6.聚合內(nèi)實現(xiàn)事務(wù)一致性 7.聚合外實現(xiàn)最終一致性 8.案例:更新訂單狀態(tài)與庫存扣減 Version 1.0 9.案例:更新訂單狀態(tài)與庫存扣減 Version 2.0 10.聚合設(shè)計的注意點 |
四、應(yīng)用服務(wù) – 用例是樂譜,應(yīng)用服務(wù)是指揮家 |
11.用例 (Use Case) 與應(yīng)用服務(wù) 12.應(yīng)用服務(wù)中的 編排,轉(zhuǎn)換,驗證,轉(zhuǎn)發(fā) 13.工作單元 (Unit of Work) 14.數(shù)據(jù)傳輸對象 (Data Transfer Object) 15.事務(wù)腳本 (Transaction Script) 與領(lǐng)域模型 16.依賴注入在應(yīng)用服務(wù)中的使用 17.案例:實現(xiàn)應(yīng)用服務(wù) 18.應(yīng)用服務(wù)的關(guān)注點 19.實戰(zhàn) - 任務(wù)分配執(zhí)行系統(tǒng) 應(yīng)用層構(gòu)建 |
五、領(lǐng)域服務(wù) – 不是實體本身的行為都歸它 |
1.領(lǐng)域服務(wù)的冪等性 2.案例:實現(xiàn)領(lǐng)域服務(wù) 3.實戰(zhàn) - 任務(wù)分配執(zhí)行系統(tǒng) 領(lǐng)域服務(wù)層構(gòu)建 |
六、領(lǐng)域事件 – 保持最終一致性的信使 |
1.領(lǐng)域事件是領(lǐng)域建模中極其重要的部分 2.事務(wù)一致性,高并發(fā)下的窘境 3.最終一致性,妥協(xié)帶來高擴展性 4.原則:一個事務(wù)中只對一個聚合進行修改 5.案例:實現(xiàn)抽象事件源,發(fā)布事件源 6.案例:實現(xiàn)抽象事件處理 7.案例:實現(xiàn)領(lǐng)域事件的發(fā)布與訂閱 8.實戰(zhàn) - 任務(wù)分配執(zhí)行系統(tǒng) 任務(wù)分配領(lǐng)域邏輯 |
七、資源庫 – 聚合的起點與終點 |
1.集合特性 2.資源庫與數(shù)據(jù)訪問層的區(qū)別 3.資源庫的誤解 4.資源庫的實現(xiàn)要點 5.案例:資源庫的實現(xiàn) 6.領(lǐng)域模型 VS 數(shù)據(jù)模型 7.案例:泛型資源庫 8.實戰(zhàn):實戰(zhàn) - 任務(wù)分配執(zhí)行系統(tǒng) 持久化 |
一、實體 – 數(shù)據(jù)容器還是行為載體 1.貧血模型 2.如何避免貧血,實體與領(lǐng)域服務(wù)之間的分寸 3.唯一標識 4.委派標識 5.案例:實現(xiàn)實體層超類型(Layer Supertype) 6.實戰(zhàn) - 任務(wù)分配執(zhí)行系統(tǒng) 實體行為歸屬甄別 |
二、值對象 – 性能提升小幫手 1.什么是值對象 2.值對象的特征 3.為什么值對象這么容易被忽略 4.案例:地址建模與值對象 5.案例:實現(xiàn)值對象層超類型 |
三、聚合 – 比類更高一層的封裝 1.聚合設(shè)計原則 2.聚合設(shè)計的過程 3.聚合的一致性邊界 4.一個事務(wù)中只處理一個聚合 5.UML 中的聚合 與 DDD 中的聚合 6.聚合內(nèi)實現(xiàn)事務(wù)一致性 7.聚合外實現(xiàn)最終一致性 8.案例:更新訂單狀態(tài)與庫存扣減 Version 1.0 9.案例:更新訂單狀態(tài)與庫存扣減 Version 2.0 10.聚合設(shè)計的注意點 |
四、應(yīng)用服務(wù) – 用例是樂譜,應(yīng)用服務(wù)是指揮家 11.用例 (Use Case) 與應(yīng)用服務(wù) 12.應(yīng)用服務(wù)中的 編排,轉(zhuǎn)換,驗證,轉(zhuǎn)發(fā) 13.工作單元 (Unit of Work) 14.數(shù)據(jù)傳輸對象 (Data Transfer Object) 15.事務(wù)腳本 (Transaction Script) 與領(lǐng)域模型 16.依賴注入在應(yīng)用服務(wù)中的使用 17.案例:實現(xiàn)應(yīng)用服務(wù) 18.應(yīng)用服務(wù)的關(guān)注點 19.實戰(zhàn) - 任務(wù)分配執(zhí)行系統(tǒng) 應(yīng)用層構(gòu)建 |
五、領(lǐng)域服務(wù) – 不是實體本身的行為都歸它 1.領(lǐng)域服務(wù)的冪等性 2.案例:實現(xiàn)領(lǐng)域服務(wù) 3.實戰(zhàn) - 任務(wù)分配執(zhí)行系統(tǒng) 領(lǐng)域服務(wù)層構(gòu)建 |
六、領(lǐng)域事件 – 保持最終一致性的信使 1.領(lǐng)域事件是領(lǐng)域建模中極其重要的部分 2.事務(wù)一致性,高并發(fā)下的窘境 3.最終一致性,妥協(xié)帶來高擴展性 4.原則:一個事務(wù)中只對一個聚合進行修改 5.案例:實現(xiàn)抽象事件源,發(fā)布事件源 6.案例:實現(xiàn)抽象事件處理 7.案例:實現(xiàn)領(lǐng)域事件的發(fā)布與訂閱 8.實戰(zhàn) - 任務(wù)分配執(zhí)行系統(tǒng) 任務(wù)分配領(lǐng)域邏輯 |
七、資源庫 – 聚合的起點與終點 1.集合特性 2.資源庫與數(shù)據(jù)訪問層的區(qū)別 3.資源庫的誤解 4.資源庫的實現(xiàn)要點 5.案例:資源庫的實現(xiàn) 6.領(lǐng)域模型 VS 數(shù)據(jù)模型 7.案例:泛型資源庫 8.實戰(zhàn):實戰(zhàn) - 任務(wù)分配執(zhí)行系統(tǒng) 持久化 |