序............... xix
         前言............. xxi
         緻謝............ xxxi
         關於作者................... xxxv
         如何使用本書.........xxxvii
         第1章 DDD入門...............1
         我能DDD嗎?..................2
         為什麼我們需要DDD.............5
         如何DDD...................... 17
         使用DDD的業務價值..............22
         1.你獲得瞭一個非常有用的領域模型................22
         2.你的業務得到瞭更準確的定義和理解............23
         3.領域專傢可以為軟件設計做齣貢獻...........23
         4.更好的用戶體驗....................23
         5.清晰的模型邊界.....................24
         6.更好的企業架構..............24
         7.敏捷、迭代式和持續建模....................24
         8.使用戰略和戰術新工具........................24
         實施DDD所麵臨的挑戰.....................25
         虛構的案例,真實的實踐................... 33
         本章小結.........................36
         第2章 領域、子域和限界上下文.....................37
         總覽....................... 37
         工作中的子域和限界上下文............................. 38
         將關注點放在核心域上............................. 42
         戰略設計為什麼重要.................... 45
         現實世界中領域和子域...................48
         理解限界上下文..................... 53
         限界上下文不僅僅隻包含模型..................... 57
         限界上下文的大小...................... 59
         與技術組件保持一緻................... 61
         示例上下文........................ 62
         協作上下文..................63
         身份與訪問上下文..................69
         敏捷項目管理上下文................. 71
         本章小結....................................73
         第3章 上下文映射圖............................75
         上下文映射圖為什麼重要........................ 75
         繪製上下文映射圖......................77
         産品和組織關係........................79
         映射3個示例限界上下文........................82
         本章小結............................97
         第4章 架構.......................99
         采訪一個成功的CIO.................... 100
         分層................................. 104
         依賴倒置原則.................... 107
         六邊形架構(端口與適配器)..................... 110
         麵嚮服務架構.......................114
         REST................................117
         REST作為一種架構風格...........................117
         RESTful HTTP服務器的關鍵方麵 ........................................ 118
         RESTful HTTP客戶端的關鍵方麵 ........................................ 119
         REST和DDD..................... 120
         為什麼是REST?......................... 121
         命令和查詢職責分離——CQRS................. 121
         CQRS的各個方麵........................ 123
         處理具有最終一緻性的查詢模型.................. 128
         事件驅動架構................... 129
         管道和過濾器..................... 131
         長時處理過程(也叫Saga)................... 134
         事件源...................... 140
         數據網織和基於網格的分布式計算....................... 143
         數據復製..................... 144
         事件驅動網織和領域事件.................. 145
         持續查詢................... 145
         分布式處理...................... 146
         本章小結............................ 148
         第5章 實體......................... 149
         為什麼使用實體......................... 149
         唯一標識............................ 151
         用戶提供唯一標識......................... 152
         應用程序生成唯一標識........................... 153
         持久化機製生成唯一標識............................ 156
         另一個限界上下文提供唯一標識..................... 160
         標識生成時間..................... 161
         委派標識......................... 163
         標識穩定性.......................... 165
         發現實體及其本質特徵............................. 167
         揭開實體及其本質特徵的神秘麵紗................. 168
         挖掘實體的關鍵行為.......................... 172
         角色和職責......................... 176
         創建實體......................... 181
         驗證................................... 183
         跟蹤變化............................ 192
         本章小結................................ 192
         第6章 值對象..................... 193
         值對象的特徵.......................... 194
         度量或描述.......................... 195
         不變性........................... 195
         概念整體................................ 196
         可替換性.......................... 199
         值對象相等性..........................200
         無副作用行為............................. 201
         最小化集成..................204
         用值對象錶示標準類型........................206
         測試值對象........................ 210
         實現.............................. 214
         持久化值對象................. 219
         拒絕由數據建模泄漏帶來的不利影響..................220
         ORM與單個值對象................................ 221
         多個值對象序列化到單個列中.....................224
         使用數據庫實體保存多個值對象....................225
         使用聯閤錶保存多個值對象..........................229
         ORM與枚舉狀態對象........................................230
         本章小結....................... 233
         第7章 領域服務.................................235
         什麼是領域服務(首先,什麼不是領域服務).................. 237
         請確定你是否需要一個領域服務................................ 238
         建模領域服務.................. 241
         獨立接口有必要嗎.............................244
         一個計算過程..........................246
         轉換服務........................249
         為領域服務創建一個迷你層.........................250
         測試領域服務............................250
         本章小結.................. 253
         第8章 領域事件...............................255
         何時/為什麼使用領域事件.......................... 255
         建模領域事件.................... 258
         創建具有聚閤特徵的領域事件................... 263
         身份標識............................264
         從領域模型中發布領域事件.............................. 265
         發送方................... 265
         訂閱方.....................269
         嚮遠程限界上下文發布領域事件............................. 271
         消息設施的一緻性........................... 271
         自治服務和係統............................. 272
         容許時延.................. 273
         事件存儲.................. 274
         轉發存儲事件的架構風格........................... 279
         以REST資源的方式發布事件通知....................... 279
         通過消息中間件發布事件通知.................. 283
         實現............................284
         發布NotificationLog............... 285
         發布基於消息的事件通知..............................290
         本章小結........................297
         第9章 模塊................................299
         通過模塊完成設計..................................299
         模塊的基本命名規範..........................302
         領域模型的命名規範...........................302
         敏捷項目管理上下文中的模塊..............................305
         其他層中的模塊..................308
         先考慮模塊,再是限界上下文...............................309
         本章小結......................... 310
         第10章 聚閤...................... 311
         在Scrum核心領域中使用聚閤........................ 312
         第一次嘗試:臃腫的聚閤....................... 313
         第二次嘗試:多個聚閤........................... 314
         原則:在一緻性邊界之內建模真正的不變條件................317
         原則:設計小聚閤............................. 319
         不要相信每一個用例............................ 321
         原則:通過唯一標識引用其他聚閤......................... 322
         通過標識引用使多個聚閤協同工作 ...................................... 324
         建模對象導航性............................ 325
         可伸縮性和分布式............................. 326
         原則:在邊界之外使用最終一緻性............................. 327
         誰的任務?............................ 328
         打破原則的理由......................... 329
         理由之一:方便用戶界麵................................. 329
         理由之二:缺乏技術機製............................. 330
         理由之三:全局事務.......................................... 331
         理由之四:查詢性能.................................. 331
         遵循原則.................... 332
         通過發現,深入理解............................... 332
         重新思考設計............................... 332
         估算聚閤成本............................. 334
         常見用例場景........................ 335
         內存消耗............................ 336
         探索另外的設計................................... 337
         實現最終一緻性.............................. 338
         這是Scrum團隊成員的任務嗎?......................... 339
         決定的時候到瞭.............................. 341
         實現........................................ 341
         創建具有唯一標識的根實體........................ 342
         優先使用值對象...................... 343
         使用迪米特法則和“告訴而非詢問”原則 ...............344
         樂觀並發...............346
         避免依賴注入................348
         本章小結................................ 349
         第11章 工廠................. 351
         領域模型中的工廠................. 351
         聚閤根中的工廠方法............................. 352
         創建CalendarEntry實例................... 353
         創建Discussion實例............................ 357
         領域服務中的工廠.......................... 358
         本章小結.......................... 361
         第12章 資源庫...........................363
         麵嚮集閤資源庫...........................364
         Hibernate實現...................... 369
         TopLink實現.................... 377
         麵嚮持久化資源庫........................ 379
         Coherence實現............................ 381
         MongoDB實現......................... 386
         額外的行為...................................... 391
         管理事務................................. 393
         警告................................. 397
         類型層級............................... 397
         資源庫 vs 數據訪問對象(DAO)..............................400
         測試資源庫.......................................... 401
         以內存實現進行測試...................404
         本章小結................................407
         第13章 集成限界上下文...............................409
         集成基礎知識....................................409
         分布式係統之間存在根本性區彆.......................411
         跨係統邊界交換信息...............................411
         通過REST資源集成限界上下文......................... 417
         實現REST資源.......................... 418
         使用防腐層實現REST客戶端........... 421
         通過消息集成限界上下文................ 428
         從Scrum的産品負責人和團隊成員處得到持續通知 .................... 428
         你能處理這樣的職責嗎?..................... 434
         長時處理過程,以及避免職責............. 439
         長時處理過程的狀態機和超時跟蹤器 .................................. 450
         設計一個更復雜的長時處理過程 ..........................................460
         當消息機製或你的係統不可用時 ...........................................464
         本章小結.................................465
         第14章 應用程序..................467
         用戶界麵...................................469
         渲染領域對象............. 470
         渲染數據傳輸對象................... 471
         使用調停者發布聚閤的內部狀態 .......................................... 471
         通過領域負載對象渲染聚閤實例 .......................................... 472
         聚閤實例的狀態展現............................. 473
         用例優化資源庫查詢...................... 474
         處理不同類型的客戶端................... 474
         渲染適配器以及處理用戶編輯............. 475
         應用服務 ............................................ 478
         示例應用服務 ................................ 478
         解耦服務輸齣 .....................485
         組閤多個限界上下文 .....................487
         基礎設施 ...............................489
         企業組件容器 ....................490
         本章小結 ....................494
         附錄A 聚閤與事件源:A+ES ..........................495
         應用服務內部 ....................... 496
         命令處理器 .....................505
         Lambda語法...................508
         並發控製 ....................... 510
         A+ES所帶來的結構自由性 .............. 513
         性能 ............................ 513
         實現事件存儲 ..................... 516
         關係型持久化 .................. 520
         BLOB持久化 ...................... 522
         專注的聚閤 ............................ 523
         讀模型投射 ........................... 524
         與聚閤設計一道使用 ................ 527
         增強事件 ........................... 527
         工具和模式 ................... 529
         事件序列器 .......... 530
         事件不變性 ................ 531
         值對象 ..................... 531
         協議生成 .................... 534
         單元測試和需求規範 .............. 535
         事件源和函數式語言 .......... 536
         參考文獻 ..................539
      · · · · · ·     (
收起)