《DDD工程實(shí)戰(zhàn):從零構(gòu)建企業(yè)級(jí)DDD應(yīng)用》資深架構(gòu)師15年經(jīng)驗(yàn)總結(jié),全面剖析DDD核心概念、技術(shù)體系、開(kāi)發(fā)框架,手把手教你從零構(gòu)建一個(gè)完整的DDD應(yīng)用
定 價(jià):99 元
- 作者:鄭天民 著
- 出版時(shí)間:2023/2/1
- ISBN:9787111717874
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.5
- 頁(yè)碼:250
- 紙張:
- 版次:
- 開(kāi)本:16
這是一本能教你快速?gòu)牧銟?gòu)建一個(gè)完整的企業(yè)級(jí)DDD應(yīng)用的實(shí)戰(zhàn)性著作。
DDD本身涉及的概念多,而且技術(shù)組件的實(shí)現(xiàn)也比較復(fù)雜,對(duì)于初學(xué)者來(lái)說(shuō)門(mén)檻相對(duì)較高。本書(shū)在寫(xiě)作上另辟蹊徑,首先用很短的篇幅將限界上下文、聚合、實(shí)體等十幾組核心概念和技術(shù)組件,以及Spring Boot、Spring Cloud和Axon等開(kāi)發(fā)DDD應(yīng)用的主流開(kāi)源框架做了一個(gè)簡(jiǎn)單的介紹,然后用8章的篇幅講解了一個(gè)綜合性的案例,不僅將前面提到的這些核心概念、技術(shù)組件和開(kāi)發(fā)框架的原理、使用全部融入到了案例中,還一步步地詳細(xì)講解了DDD應(yīng)用的實(shí)現(xiàn)方式和落地細(xì)節(jié)。
通過(guò)閱讀本書(shū),你能獲得以下收獲:
架構(gòu)設(shè)計(jì):基于DDD核心概念設(shè)計(jì)業(yè)務(wù)體系架構(gòu)。
技術(shù)體系:根據(jù)DDD技術(shù)實(shí)現(xiàn)模型掌握主流框架的應(yīng)用。
案例實(shí)戰(zhàn):遞進(jìn)式演練DDD核心理念及技術(shù)的落地實(shí)現(xiàn)。
工程實(shí)施:提升DDD工程的整體實(shí)施水平和能力。
前 言
第1章 引入DDD 1
1.1 面向領(lǐng)域的設(shè)計(jì)思想 1
1.1.1 業(yè)務(wù)模型和系統(tǒng)復(fù)雜度 2
1.1.2 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的維度 4
1.2 面向領(lǐng)域的設(shè)計(jì)方法 4
1.2.1 面向領(lǐng)域的戰(zhàn)略設(shè)計(jì) 5
1.2.2 面向領(lǐng)域的戰(zhàn)術(shù)設(shè)計(jì) 7
1.3 應(yīng)用DDD 12
1.3.1 DDD與單體架構(gòu) 12
1.3.2 DDD與微服務(wù)架構(gòu) 13
1.3.3 DDD與中臺(tái)架構(gòu) 14
1.4 本章小結(jié) 15
第2章 DDD核心概念 16
2.1 子域和限界上下文 16
2.1.1 子域的類型 17
2.1.2 限界上下文的映射和集成 17
2.2 領(lǐng)域模型對(duì)象 20
2.2.1 實(shí)體和值對(duì)象 20
2.2.2 聚合 25
2.3 領(lǐng)域服務(wù) 28
2.4 領(lǐng)域事件 29
2.5 資源庫(kù) 31
2.5.1 資源庫(kù)模式 31
2.5.2 資源庫(kù)的設(shè)計(jì)策略 32
2.6 應(yīng)用服務(wù) 33
2.6.1 應(yīng)用服務(wù)的定位 33
2.6.2 應(yīng)用服務(wù)的分類 34
2.7 基礎(chǔ)設(shè)施 34
2.8 本章小結(jié) 35
第3章 DDD案例分析 37
3.1 HealthMonitor業(yè)務(wù)體系 37
3.1.1 案例描述和通用語(yǔ)言 37
3.1.2 案例建模流程 39
3.2 子域和限界上下文 40
3.2.1 HealthMonitor子域 40
3.2.2 HealthMonitor限界上下文 42
3.3 領(lǐng)域模型對(duì)象 44
3.3.1 HealthMonitor聚合 44
3.3.2 HealthMonitor實(shí)體 45
3.3.3 HealthMonitor值對(duì)象 46
3.4 領(lǐng)域事件和事務(wù) 47
3.4.1 HealthMonitor領(lǐng)域事件 48
3.4.2 HealthMonitor事務(wù) 50
3.5 應(yīng)用服務(wù) 50
3.5.1 HealthMonitor命令服務(wù) 51
3.5.2 HealthMonitor查詢服務(wù) 53
3.6 限界上下文集成 54
3.7 本章小結(jié) 55
第4章 DDD實(shí)現(xiàn)技術(shù) 56
4.1 DDD技術(shù)實(shí)現(xiàn)模型 57
4.1.1 單體模型 57
4.1.2 系統(tǒng)集成模型 58
4.1.3 微服務(wù)模型 59
4.1.4 消息通信模型 60
4.2 Spring Boot與DDD實(shí)現(xiàn)模型 61
4.2.1 Spring Boot 62
4.2.2 Spring Data 64
4.3 Spring Cloud與DDD實(shí)現(xiàn)模型 65
4.3.1 Spring Cloud基礎(chǔ)組件 65
4.3.2 Spring Cloud Stream 67
4.4 Axon與DDD實(shí)現(xiàn)模型 68
4.4.1 CQRS和事件溯源 68
4.4.2 Axon框架 70
4.5 本章小結(jié) 71
第5章 案例實(shí)現(xiàn):限界上下文 72
5.1 Spring Boot應(yīng)用程序 72
5.1.1 傳統(tǒng)Spring Boot應(yīng)用程序 73
5.1.2 基于DDD的Spring Boot
應(yīng)用程序 76
5.2 創(chuàng)建第一個(gè)限界上下文 78
5.2.1 代碼包結(jié)構(gòu) 78
5.2.2 領(lǐng)域?qū)ο蟆?9
5.2.3 應(yīng)用服務(wù) 80
5.2.4 基礎(chǔ)設(shè)施 81
5.2.5 接口 81
5.2.6 集成 82
5.3 實(shí)現(xiàn)HealthMonitor限界上下文 84
5.3.1 代碼工程 84
5.3.2 限界上下文映射 85
5.4 本章小結(jié) 86
第6章 案例實(shí)現(xiàn):領(lǐng)域模型對(duì)象 87
6.1 創(chuàng)建聚合 88
6.2 抽取實(shí)體和值對(duì)象 89
6.2.1 抽取實(shí)體 89
6.2.2 抽取值對(duì)象 92
6.3 為聚合添加領(lǐng)域邏輯 94
6.3.1 實(shí)現(xiàn)申請(qǐng)健康監(jiān)控領(lǐng)域邏輯 95
6.3.2 實(shí)現(xiàn)創(chuàng)建健康計(jì)劃領(lǐng)域邏輯 97
6.3.3 實(shí)現(xiàn)執(zhí)行健康任務(wù)領(lǐng)域邏輯 97
6.4 實(shí)現(xiàn)HealthMonitor領(lǐng)域模型對(duì)象 99
6.4.1 HealthPlan聚合 99
6.4.2 HealthTask聚合 99
6.4.3 HealthRecord聚合 100
6.4.4 共享領(lǐng)域?qū)ο蟆?00
6.5 本章小結(jié) 101
第7章 案例實(shí)現(xiàn):應(yīng)用服務(wù) 102
7.1 應(yīng)用服務(wù)實(shí)現(xiàn)策略 102
7.2 實(shí)現(xiàn)應(yīng)用服務(wù) 105
7.2.1 實(shí)現(xiàn)命令服務(wù) 105
7.2.2 實(shí)現(xiàn)查詢服務(wù) 108
7.3 整合應(yīng)用服務(wù)和聚合 110
7.4 實(shí)現(xiàn)HealthMonitor應(yīng)用服務(wù) 111
7.5 本章小結(jié) 113
第8章 案例實(shí)現(xiàn):資源庫(kù) 114
8.1 資源庫(kù)實(shí)現(xiàn)策略 114
8.2 Spring Data JPA 116
8.2.1 Spring Data抽象 116
8.2.2 JPA規(guī)范 117
8.2.3 多樣化查詢 118
8.3 實(shí)現(xiàn)資源庫(kù) 122
8.3.1 創(chuàng)建PO和工廠 122
8.3.2 創(chuàng)建Mapper 124
8.3.3 實(shí)現(xiàn)Repository 126
8.4 整合資源庫(kù)和應(yīng)用服務(wù) 128
8.5 實(shí)現(xiàn)HealthMonitor資源庫(kù) 129
8.6 本章小結(jié) 131
第9章 案例實(shí)現(xiàn):領(lǐng)域事件 132
9.1 領(lǐng)域事件實(shí)現(xiàn)策略 132
9.2 基于Spring Data生成領(lǐng)域事件 134
9.2.1 @DomainEvents注解和
AbstractAggregateRoot 135
9.2.2 @TransactionalEventListener
注解 136
9.3 基于Spring Cloud Stream發(fā)布和
訂閱領(lǐng)域事件 137
9.3.1 Spring Cloud Stream整體
架構(gòu) 137
9.3.2 實(shí)現(xiàn)Spring Cloud Stream
Source 142
9.3.3 實(shí)現(xiàn)Spring Cloud Stream
Sink 146
9.4 實(shí)現(xiàn)HealthMonitor領(lǐng)域事件 152
9.5 本章小結(jié) 152
第10章 案例實(shí)現(xiàn):限界上下文集成 153
10.1 限界上下文集成策略 153
10.1.1 統(tǒng)一協(xié)議和防腐層 154
10.1.2 服務(wù)注冊(cè)和發(fā)現(xiàn) 155
10.2 基于REST API構(gòu)建統(tǒng)一協(xié)議 156
10.2.1 創(chuàng)建Controller 156
10.2.2 處理Web請(qǐng)求 157
10.2.3 集成應(yīng)用服務(wù) 158
10.3 基于REST API構(gòu)建防腐層 162
10.3.1 創(chuàng)建和使用RestTemplate 162
10.3.2 創(chuàng)建防腐層組件 165
10.3.3 集成命令服務(wù) 166
10.4 本章小結(jié) 168
第11章 案例實(shí)現(xiàn):事件溯源和CQRS 169
11.1 事件溯源和CQRS的實(shí)現(xiàn)策略 169
11.1.1 事件溯源模式的設(shè)計(jì)理念 170
11.1.2 整合事件溯源和CQRS 171
11.2 Axon框架 172
11.2.1 Axon框架的整體架構(gòu) 173
11.2.2 Axon服務(wù)器 175
11.3 Axon框架的領(lǐng)域模型組件 176
11.3.1 Aggregate 176
11.3.2 CommandHandler 176
11.3.3 QueryHandler 177
11.3.4 EventHandler 178
11.3.5 EventSourceHandler 179
11.4 Axon框架的分派模型組件 180
11.4.1 CommandBus 181
11.4.2 QueryBus 183
11.4.3 EventBus 184
11.5 基于Axon框架實(shí)現(xiàn)HealthMonitor案例系統(tǒng) 185
11.5.1 基于Axon框架的重構(gòu)
策略 185
11.5.2 重構(gòu)領(lǐng)域模型對(duì)象 187
11.5.3 重構(gòu)應(yīng)用服務(wù) 191
11.5.4 重構(gòu)領(lǐng)域事件 194
11.6 本章小結(jié) 195
第12章 案例實(shí)現(xiàn):測(cè)試 196
12.1 DDD測(cè)試內(nèi)容和類型 197
12.1.1 DDD應(yīng)用程序的測(cè)試
內(nèi)容 197
12.1.2 DDD應(yīng)用程序的測(cè)試
類型 198
12.2 Spring Boot中的測(cè)試解決方案 200
12.2.1 測(cè)試工具組件 200
12.2.2 測(cè)試流程 201
12.2.3 測(cè)試注解 205
12.3 測(cè)試HealthMonitor案例系統(tǒng) 210
12.3.1 測(cè)試領(lǐng)域?qū)ο蟆?10
12.3.2 測(cè)試應(yīng)用服務(wù) 213
12.3.3 測(cè)試資源庫(kù) 216
12.3.4 測(cè)試接口 219
12.4 本章小結(jié) 220
第13章 DDD實(shí)踐方法 221
13.1 DDD架構(gòu)風(fēng)格 221
13.1.1 應(yīng)用經(jīng)典分層架構(gòu)管理
組件依賴關(guān)系 222
13.1.2 應(yīng)用整潔架構(gòu)有效實(shí)現(xiàn)
應(yīng)用程序分層 224
13.1.3 應(yīng)用六邊形架構(gòu)分離系統(tǒng)
關(guān)注點(diǎn) 225
13.1.4 應(yīng)用事件驅(qū)動(dòng)和管道-
過(guò)濾器混合架構(gòu)實(shí)現(xiàn)系統(tǒng)
解耦 228
13.2 DDD實(shí)施方式 230
13.2.1 DDD實(shí)施的前提和模式 230
13.2.2 基于DDD構(gòu)建應(yīng)用程序
的方法 232
13.3 整合DDD與微服務(wù) 233
13.3.1 微服務(wù)拆分模式 233
13.3.2 微服務(wù)數(shù)據(jù)管理模式 236
13.3.3 微服務(wù)與HealthMonitor
案例系統(tǒng) 241
13.4 本章小結(jié) 250