天天看點

複雜軟體設計之道:領域驅動設計全面解析與實戰

"IT有得聊”是機械工業出版社旗下IT專業資訊和服務平台,緻力于幫助讀者在廣義的IT領域裡,掌握更專業、實用的知識與技能,快速提升職場競争力。 

今天為您推薦一本精品圖書--複雜軟體設計之道:領域驅動設計全面解析與實戰(ISBN:978-7-111-66112-2)。本書主要面向擁有一定實踐經驗的軟體産品經理、領域專家、軟體設計開發相關從業人員,相關初級從業者也可閱讀本書。為了幫助初學者更好地學習DDD,配合本書的理論指導,banq老師為本書配備了有關DDD+SpringBoot/SpringCloud微服務視訊教程,購書之後可免費下載下傳!

複雜軟體設計之道:領域驅動設計全面解析與實戰

1

作者介紹

複雜軟體設計之道:領域驅動設計全面解析與實戰

2

内容介紹

領域驅動設計簡稱DDD,《複雜軟體設計之道:領域驅動設計全面解析與實戰》前6章全面解析了DDD的分析方法和技術架構,包括領域驅動設計基礎、領域驅動戰略設計(有界上下文和統一語言)、聚合設計、實體和值對象、CQRS架構和事件溯源,第7章使用經典的貨物運輸系統案例進行了完整、詳細的綜合示範。

《複雜軟體設計之道:領域驅動設計全面解析與實戰》同時引入了DDD的最新發展成果,如事件風暴模組化,并以此模組化方式替代傳統的DDD模組化方式講解了多個案例。還涉及大量軟體系統實作相關的技術和架構,讀者在學習DDD的同時,也可以掌握這些技術、架構在DDD實作中的靈活應用。

複雜軟體設計之道:領域驅動設計全面解析與實戰

3

圖書目錄

前言

第1章  領域驅動設計基礎1

1.1  領域驅動設計的起源與發展1

1.1.1  程式員為難之處1

1.1.2  技術負債與軟體品質3

1.1.3  ER資料模組化與面向對象模組化4

1.1.4  DDD的誕生和發展6

1.2  領域驅動設計的特點9

1.2.1  發現和了解問題10

1.2.2  領域即邊界13

1.2.3  解決複雜性15

1.2.4  新的資料結構設計方式17

1.2.5  需要注重産品的程式員18

1.3  領域驅動設計的難點20

1.3.1  業務政策和業務規則21

1.3.2  統一語言與有界上下文25

1.3.3  領域模型的提煉26

1.4  領域驅動設計的應用場景29

1.4.1  哪些應用不适合?30

1.4.2  适合微服務架構30

第2章  領域驅動戰略設計31

2.1  有界上下文31

2.1.1  統一語言:統一項目中的交流

語言32

2.1.2  如何發現有界上下文和統一

語言?34

2.1.3  有界上下文之間的關系36

2.1.4  核心子域、支援子域與通用

子域37

2.1.5  執行個體解析:電費結算系統38

2.2  按時間線發現有界上下文40

2.2.1  UML時序圖40

2.2.2  執行個體解析:電商領域之商品管理

上下文41

2.3  通過領域故事或流程發現有界

上下文45

2.4  通過事件風暴會議發現有界

上下文48

2.4.1  領域事件50

2.4.2  指令51

2.4.3  事件風暴模組化法53

2.4.4  執行個體解析:一個典型的事件風暴

模組化議程56

2.5  業務平台與中台設計60

2.6  總結與拓展62

第3章  聚合設計68

3.1  聚合設計的概念68

3.1.1  高聚合低關聯71

3.1.2  聚合的邏輯一緻性74

3.2  設計聚合的幾種方法77

3.2.1  改變主謂賓順序78

3.2.2  根據領域事件設計聚合79

3.2.3  根據單一職責設計聚合81

3.2.4  按時間邊界設計聚合83

3.2.5  通過事務邊界設計聚合87

3.2.6  通過ER模型設計聚合89

3.3  執行個體解析:訂單系統中的聚合

設計95

3.3.1  資訊擁有者模式97

3.3.2  引用模式99

3.3.3  奧卡姆剃刀原理100

3.3.4  控制者模式101

3.3.5  訂單狀态集中控制實作103

3.3.6  做什麼和怎麼做的分離106

3.3.7  在服務中驗證聚合107

3.3.8  Spring Boot實作110

3.4  總結與拓展115

第4章  實體和值對象121

4.1  失血/貧血模型121

4.2  實體124

4.2.1  實體的辨別125

4.2.2  實體的設計126

4.2.3  實體對象的建立128

4.3  值對象131

4.3.1  值對象與實體的差別134

4.3.2  用值對象重構138

4.4  領域服務140

4.4.1  領域服務的特征141

4.4.2  領域服務與應用服務144

4.5  倉儲147

4.5.1  自行實作倉儲148

4.5.2  結合Builder模式實作倉儲151

4.6  充血模型的設計原則154

4.6.1  将公有setter方法變為私有155

4.6.2  注重對象的建構157

4.7  執行個體解析:論壇系統實體和

值對象設計159

4.7.1  聚合根實體是什麼?161

4.7.2  值對象的設計164

4.7.3  狀态設計167

4.7.4  發帖功能實作170

4.7.5  雙聚合根173

4.7.6  配置設定職責行為176

4.7.7  建構對象必須遵循唯一性179

4.8  總結與拓展184

第5章  CQRS架構186

5.1  DDD架構介紹187

5.1.1  MVC模式187

5.1.2  傳統三層架構188

5.1.3  傳統DDD分層架構191

5.1.4  清潔架構194

5.1.5  六邊形架構198

5.1.6  垂直切片架構201

5.2  CQRS架構的特點203

5.3  指令和查詢分離205

5.3.1  查詢模型實作206

5.3.2  指令模型實作210

5.3.3  Command對象212

5.3.4  指令和查詢的協作216

5.4  不同的資料通路方式219

5.4.1  查詢端存儲實作220

5.4.2  規格模式221

5.4.3  指令與查詢的同步224

5.5  CAP定理226

5.6  領域事件實作資料同步227

5.7  執行個體解析:使用Axon架構

實作CQRS231

5.7.1  指令端實作233

5.7.2  查詢端實作236

5.8  總結與拓展237

第6章  事件溯源241

6.1  什麼是事件溯源?242

6.2  基于事件溯源的聚合根設計249

6.2.1  用事件替代狀态249

6.2.2  活動與事件253

6.3  事件溯源的優點260

6.3.1  替代分布式事務261

6.3.2  事件日志的順序性263

6.3.3  基于事件日志的消息系統265

6.4  微服務中的分布式事務

實作266

6.4.1  引入Saga模式267

6.4.2  Saga分布式事務原理267

6.4.3  執行個體解析:賬戶轉賬271

6.5  使用Apache Kafka實作事件

溯源275

6.6  投射模式280

6.7  更改資料捕獲(CDC)282

6.8  總結與拓展285

第7章  貨物運輸系統290

7.1  領域描述290

7.2  從流程中發現領域事件294

7.2.1  受理流程295

7.2.2  作業流程298

7.3  概念挖掘301

7.3.1  劃分有界上下文302

7.3.2  預訂受理上下文304

7.3.3  運輸作業上下文306

7.4  預訂受理的聚合設計309

7.4.1  聚合的發現和命名309

7.4.2  聚合設計313

7.4.3  狀态設計316

7.4.4  指令與事件設計317

7.4.5  代碼實作320

7.4.6  設計和實作的差異325

7.5  運輸作業的聚合設計327

7.5.1  指令、事件和聚合328

7.5.2  有界上下文映射331

7.5.3  聚合重構設計334

7.6  總結與拓展336 

5

讀者對象

複雜軟體設計之道:領域驅動設計全面解析與實戰

6

圖書詳情

複雜軟體設計之道:領域驅動設計全面解析與實戰
複雜軟體設計之道:領域驅動設計全面解析與實戰

複雜軟體設計之道:領域驅動設計全面解析與實戰

掃碼關注↓

繼續閱讀