核心設(shè)計 - 分層架構(gòu)
- 領(lǐng)域模型:領(lǐng)域模型通常位于應(yīng)用程序的中心位置逝嚎,是領(lǐng)域邏輯的抽象實現(xiàn)扁瓢;【領(lǐng)域服務(wù)、領(lǐng)域事件懈糯、聚合涤妒、實體、值對象】
- 用戶界面:應(yīng)用程序通過用戶界面向外展示領(lǐng)域模型的概念赚哗,并允許用戶在模型上執(zhí)行各種操作她紫;【展現(xiàn)與交互硅堆,視圖View、視圖模型ViewModel贿讹、控制器Controller】
- 應(yīng)用服務(wù):用戶界面使用應(yīng)用服務(wù)來協(xié)調(diào)用例任務(wù)渐逃、管理事務(wù),并執(zhí)行一些必要的安全授權(quán)民褂;【服務(wù)編排&數(shù)據(jù)組裝茄菊,事務(wù)控制、安全授權(quán)赊堪、應(yīng)用事件】
- 基礎(chǔ)設(shè)施:用戶界面面殖、應(yīng)用服務(wù)和領(lǐng)域模型依賴于企業(yè)級的特定平臺設(shè)施的支持。這些基礎(chǔ)設(shè)施的實現(xiàn)細(xì)節(jié)通常包括組件容器哭廉、應(yīng)用程序管理脊僚、消息系統(tǒng)和數(shù)據(jù)庫、等遵绰×苫希【業(yè)務(wù)無關(guān)的技術(shù)實現(xiàn)】
關(guān)鍵澄清1
- 對于通用子域和支撐子域來說,有時它們可能缺少一個完備的應(yīng)用程序所需的方方面面椿访,但這無妨大礙乌企。
- 有時,我們所創(chuàng)建的模型是用來支撐應(yīng)用程序的成玫,如身份與訪問上下文加酵、BES的Common套件、CM套件哭当。即便對于IdOvation來說虽画,它也將擁有自己的用戶界面來完成一些管理和自助服務(wù)等功能。
- 如果一個模型被用來支撐另一個模型荣病,那么該支撐性模型可以簡單到只是一個模塊中的一組類而已。此時渗柿,它們可能提供一些特殊的概念个盆,或者某些算法。
- 示例:Time and Money Code Library
- 完備的應(yīng)用程序:如包括從用戶界面層朵栖、應(yīng)用層颊亮、領(lǐng)域?qū)拥交A(chǔ)設(shè)施層的全部實現(xiàn)。
- 這里使用的“應(yīng)用程序”表示那些完成核心域模型實現(xiàn)的組件(注:一個獨立的限界上下文的完整實現(xiàn))陨溅,通常包括領(lǐng)域模型本身终惑、用戶界面、內(nèi)部使用的應(yīng)用服務(wù)门扇、和基礎(chǔ)設(shè)施組件等雹有。
- 內(nèi)部使用的應(yīng)用服務(wù):因為應(yīng)用服務(wù)是用于直接支持用例實現(xiàn)的偿渡,但有些用例是跨領(lǐng)域的,則相應(yīng)的應(yīng)用服務(wù)也是跨領(lǐng)域的霸奕。所以溜宽,這里的“內(nèi)部使用的應(yīng)用服務(wù)”即是指用于支持本領(lǐng)域內(nèi)的用例(場景)的應(yīng)用服務(wù)。
- 當(dāng)應(yīng)用程序通過編程的方式對外提供服務(wù)時质帅,‘用戶界面’也就隨之?dāng)U大了适揉,將包含一種應(yīng)用程序編程接口(API)。
關(guān)鍵設(shè)計
- 如何將領(lǐng)域?qū)ο?/strong>渲染到用戶界面的顯示中煤惩?反之嫉嘀,如何將用戶操作反映到領(lǐng)域模型上?