《DDD工程實戰(zhàn):從零構(gòu)建企業(yè)級DDD應(yīng)用》資深架構(gòu)師15年經(jīng)驗總結(jié),全面剖析DDD核心概念、技術(shù)體系、開發(fā)框架,手把手教你從零構(gòu)建一個完整的DDD應(yīng)用
定 價:99 元
- 作者:鄭天民 著
- 出版時間:2023/2/1
- ISBN:9787111717874
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.5
- 頁碼:250
- 紙張:
- 版次:
- 開本:16
這是一本能教你快速從零構(gòu)建一個完整的企業(yè)級DDD應(yīng)用的實戰(zhàn)性著作。
DDD本身涉及的概念多,而且技術(shù)組件的實現(xiàn)也比較復(fù)雜,對于初學者來說門檻相對較高。本書在寫作上另辟蹊徑,首先用很短的篇幅將限界上下文、聚合、實體等十幾組核心概念和技術(shù)組件,以及Spring Boot、Spring Cloud和Axon等開發(fā)DDD應(yīng)用的主流開源框架做了一個簡單的介紹,然后用8章的篇幅講解了一個綜合性的案例,不僅將前面提到的這些核心概念、技術(shù)組件和開發(fā)框架的原理、使用全部融入到了案例中,還一步步地詳細講解了DDD應(yīng)用的實現(xiàn)方式和落地細節(jié)。
通過閱讀本書,你能獲得以下收獲:
架構(gòu)設(shè)計:基于DDD核心概念設(shè)計業(yè)務(wù)體系架構(gòu)。
技術(shù)體系:根據(jù)DDD技術(shù)實現(xiàn)模型掌握主流框架的應(yīng)用。
案例實戰(zhàn):遞進式演練DDD核心理念及技術(shù)的落地實現(xiàn)。
工程實施:提升DDD工程的整體實施水平和能力。
前 言
第1章 引入DDD 1
1.1 面向領(lǐng)域的設(shè)計思想 1
1.1.1 業(yè)務(wù)模型和系統(tǒng)復(fù)雜度 2
1.1.2 領(lǐng)域驅(qū)動設(shè)計的維度 4
1.2 面向領(lǐng)域的設(shè)計方法 4
1.2.1 面向領(lǐng)域的戰(zhàn)略設(shè)計 5
1.2.2 面向領(lǐng)域的戰(zhàn)術(shù)設(shè)計 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與中臺架構(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)域模型對象 20
2.2.1 實體和值對象 20
2.2.2 聚合 25
2.3 領(lǐng)域服務(wù) 28
2.4 領(lǐng)域事件 29
2.5 資源庫 31
2.5.1 資源庫模式 31
2.5.2 資源庫的設(shè)計策略 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 案例描述和通用語言 37
3.1.2 案例建模流程 39
3.2 子域和限界上下文 40
3.2.1 HealthMonitor子域 40
3.2.2 HealthMonitor限界上下文 42
3.3 領(lǐng)域模型對象 44
3.3.1 HealthMonitor聚合 44
3.3.2 HealthMonitor實體 45
3.3.3 HealthMonitor值對象 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實現(xiàn)技術(shù) 56
4.1 DDD技術(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實現(xiàn)模型 61
4.2.1 Spring Boot 62
4.2.2 Spring Data 64
4.3 Spring Cloud與DDD實現(xiàn)模型 65
4.3.1 Spring Cloud基礎(chǔ)組件 65
4.3.2 Spring Cloud Stream 67
4.4 Axon與DDD實現(xiàn)模型 68
4.4.1 CQRS和事件溯源 68
4.4.2 Axon框架 70
4.5 本章小結(jié) 71
第5章 案例實現(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)建第一個限界上下文 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 實現(xiàn)HealthMonitor限界上下文 84
5.3.1 代碼工程 84
5.3.2 限界上下文映射 85
5.4 本章小結(jié) 86
第6章 案例實現(xiàn):領(lǐng)域模型對象 87
6.1 創(chuàng)建聚合 88
6.2 抽取實體和值對象 89
6.2.1 抽取實體 89
6.2.2 抽取值對象 92
6.3 為聚合添加領(lǐng)域邏輯 94
6.3.1 實現(xiàn)申請健康監(jiān)控領(lǐng)域邏輯 95
6.3.2 實現(xiàn)創(chuàng)建健康計劃領(lǐng)域邏輯 97
6.3.3 實現(xiàn)執(zhí)行健康任務(wù)領(lǐng)域邏輯 97
6.4 實現(xiàn)HealthMonitor領(lǐng)域模型對象 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章 案例實現(xiàn):應(yīng)用服務(wù) 102
7.1 應(yīng)用服務(wù)實現(xiàn)策略 102
7.2 實現(xiàn)應(yīng)用服務(wù) 105
7.2.1 實現(xiàn)命令服務(wù) 105
7.2.2 實現(xiàn)查詢服務(wù) 108
7.3 整合應(yīng)用服務(wù)和聚合 110
7.4 實現(xiàn)HealthMonitor應(yīng)用服務(wù) 111
7.5 本章小結(jié) 113
第8章 案例實現(xiàn):資源庫 114
8.1 資源庫實現(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 實現(xiàn)資源庫 122
8.3.1 創(chuàng)建PO和工廠 122
8.3.2 創(chuàng)建Mapper 124
8.3.3 實現(xiàn)Repository 126
8.4 整合資源庫和應(yīng)用服務(wù) 128
8.5 實現(xiàn)HealthMonitor資源庫 129
8.6 本章小結(jié) 131
第9章 案例實現(xiàn):領(lǐng)域事件 132
9.1 領(lǐng)域事件實現(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 實現(xiàn)Spring Cloud Stream
Source 142
9.3.3 實現(xiàn)Spring Cloud Stream
Sink 146
9.4 實現(xiàn)HealthMonitor領(lǐng)域事件 152
9.5 本章小結(jié) 152
第10章 案例實現(xiàn):限界上下文集成 153
10.1 限界上下文集成策略 153
10.1.1 統(tǒng)一協(xié)議和防腐層 154
10.1.2 服務(wù)注冊和發(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請求 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章 案例實現(xiàn):事件溯源和CQRS 169
11.1 事件溯源和CQRS的實現(xiàn)策略 169
11.1.1 事件溯源模式的設(shè)計理念 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框架實現(xiàn)HealthMonitor案例系統(tǒng) 185
11.5.1 基于Axon框架的重構(gòu)
策略 185
11.5.2 重構(gòu)領(lǐng)域模型對象 187
11.5.3 重構(gòu)應(yīng)用服務(wù) 191
11.5.4 重構(gòu)領(lǐng)域事件 194
11.6 本章小結(jié) 195
第12章 案例實現(xiàn):測試 196
12.1 DDD測試內(nèi)容和類型 197
12.1.1 DDD應(yīng)用程序的測試
內(nèi)容 197
12.1.2 DDD應(yīng)用程序的測試
類型 198
12.2 Spring Boot中的測試解決方案 200
12.2.1 測試工具組件 200
12.2.2 測試流程 201
12.2.3 測試注解 205
12.3 測試HealthMonitor案例系統(tǒng) 210
12.3.1 測試領(lǐng)域?qū)ο蟆?10
12.3.2 測試應(yīng)用服務(wù) 213
12.3.3 測試資源庫 216
12.3.4 測試接口 219
12.4 本章小結(jié) 220
第13章 DDD實踐方法 221
13.1 DDD架構(gòu)風格 221
13.1.1 應(yīng)用經(jīng)典分層架構(gòu)管理
組件依賴關(guān)系 222
13.1.2 應(yīng)用整潔架構(gòu)有效實現(xiàn)
應(yīng)用程序分層 224
13.1.3 應(yīng)用六邊形架構(gòu)分離系統(tǒng)
關(guān)注點 225
13.1.4 應(yīng)用事件驅(qū)動和管道-
過濾器混合架構(gòu)實現(xiàn)系統(tǒng)
解耦 228
13.2 DDD實施方式 230
13.2.1 DDD實施的前提和模式 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