.NET現(xiàn)代應(yīng)用的產(chǎn)品設(shè)計 - DDD實踐

統(tǒng)一術(shù)語(戰(zhàn)略設(shè)計)

我們將通過DDD完成業(yè)務(wù)與技術(shù)的完整落地
統(tǒng)一
領(lǐng)域模型術(shù)語
DDD模式名稱
技術(shù)
技術(shù)設(shè)計術(shù)語
?技術(shù)術(shù)語
?技術(shù)設(shè)計模式
業(yè)務(wù)
?領(lǐng)域模型術(shù)語
DDD模式名稱
業(yè)務(wù)術(shù)語
設(shè)計無關(guān)的業(yè)務(wù)術(shù)語
清晰的事件流

DDD

領(lǐng)域驅(qū)動設(shè)計是一個有關(guān)軟件開發(fā)的方法論,它提出基于領(lǐng)域開發(fā)的開發(fā)模式,基于DDD理論,我們可以設(shè)計出高質(zhì)量的軟件模型。它圍繞業(yè)務(wù)概念構(gòu)建領(lǐng)域模型來控制業(yè)務(wù)的復(fù)雜度,解決軟件難以理解和演化的問題。
戰(zhàn)略設(shè)計(業(yè)務(wù))
領(lǐng)域、子域、限界上下文將領(lǐng)域拆分成子域,
并劃分核心子域、支撐子域和通用子域
以子域展開事件風(fēng)暴,根據(jù)上下文語義劃分限界上下文,建立通用語言,完成領(lǐng)域建模
領(lǐng)域建模將作為能力中心規(guī)劃的重要依據(jù)
完成能力中心地圖和優(yōu)先級后,作為微服務(wù)設(shè)計的輸入完成戰(zhàn)術(shù)設(shè)計
戰(zhàn)術(shù)設(shè)計(技術(shù))
聚合、聚合根、實體、值對象、領(lǐng)域服務(wù)等
按照領(lǐng)域模型完成微服務(wù)設(shè)計和落地
建立聚合、聚合根、實體、值對象、領(lǐng)域服務(wù)等對象之間的依賴關(guān)系,以代碼對象的形式映射到服務(wù)中,采用分層架構(gòu)完成微服務(wù)設(shè)計和落地
事件風(fēng)暴
一種靈活的研討會形式,用于協(xié)作探索復(fù)雜的業(yè)務(wù)領(lǐng)域

活動準備

人:業(yè)務(wù)人員,領(lǐng)域?qū)<?,技術(shù)人員,架構(gòu)師,測試等
看板:可以將事件流可視化的白板或者畫圖工具等
彩色貼紙:填寫事件,命令等
業(yè)務(wù)場景:規(guī)定業(yè)務(wù)場景,以一個電商項目為例

領(lǐng)域?qū)ο笤O(shè)計

領(lǐng)域?qū)ο箨P(guān)系
分解聚合,提取該聚合包含的領(lǐng)域?qū)ο?/p>
領(lǐng)域?qū)ο蟮臉I(yè)務(wù)不變性
領(lǐng)域?qū)ο缶哂幸恢碌纳芷?/p>
例:
訂單聚合包含訂單實體,訂單行實體
訂單實體包含收貨地址值對象
定義實體與值對象
實體:存在唯一性標識,實體間是否相等的判斷依據(jù)也是唯一標識
值對象:表示屬性的不變值
C4模型

用于可視化軟件架構(gòu):反映軟件架構(gòu)師和開發(fā)人員如何思考和構(gòu)建軟件的抽象
Context:各軟件系統(tǒng)如何交互,不關(guān)注細節(jié)
Containers:可以看到軟件系統(tǒng)內(nèi)部結(jié)構(gòu),如U,服務(wù),DB等如何協(xié)作,通信等
Components:展示容器內(nèi)的組件關(guān)系和組件的職責(zé)
Code:展示組件如何實現(xiàn),如UML類圖、實體關(guān)系圖等,非特別復(fù)雜組件不建議關(guān)注
架構(gòu)設(shè)計

我們簡單的把架構(gòu)設(shè)計看作是三個層面:
業(yè)務(wù)架構(gòu)
根據(jù)業(yè)務(wù)需求設(shè)計業(yè)務(wù)模塊及其關(guān)系
DDD的領(lǐng)域建模其實就已經(jīng)協(xié)助我們做了業(yè)務(wù)架構(gòu)和系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu)
設(shè)計系統(tǒng)與子系統(tǒng)的模塊及其關(guān)系
在DDD中業(yè)務(wù)架構(gòu)是可以直接映射到系統(tǒng)架構(gòu)上的業(yè)務(wù)變化會演變?yōu)橄到y(tǒng)架構(gòu)變化,影響到技術(shù)架構(gòu)變化
技術(shù)架構(gòu)
根據(jù)業(yè)務(wù)需求設(shè)計業(yè)務(wù)模塊及其關(guān)系
技術(shù)架構(gòu)(微服務(wù))則解決子系統(tǒng)之間的解耦,去中心化的服務(wù)治理和數(shù)據(jù)治理
前后分離


戳藍字觀看直播回放
.NET現(xiàn)代應(yīng)用的產(chǎn)品設(shè)計 - DDD實踐

掃碼進群,了解更多
MASA Framework歡迎你的加入
