作者簡介
Vaughn Vernon
Vaughn Vernon 是一名資深的軟體工程師,在軟體設計、開發與架構方面擁有超過 25 年以上的豐富經驗,提倡將創新的方法運用於實作當中並簡化軟體設計。自 1980 年代以來,他一直在從事物件導向語言的程式設計,並於 1990 年代初期還以 Smalltalk 作為領域建模工具的時期開始就致力於領域驅動設計。他在國際間提供軟體開發的諮詢與授課服務,並在許多國家開設「實戰領域驅動設計」的訓練課程。
推薦序
前言
致謝
本書閱讀指南
Chapter 1 DDD 入門
我能實作 DDD 嗎?
為什麼需要 DDD ?
如何實踐 DDD
採用 DDD 帶來的業務價值
應用 DDD 時會遇到的挑戰
非純屬虛構
本章小結
Chapter 2 領域,子領域,Bounded Context
DDD 的全貌
為何戰略設計這麼重要
實務中的領域與子領域
Bounded Context 的重要性
情境範例
本章小結
Chapter 3 情境地圖
情境地圖的重要性
本章小結
Chapter 4 架構
訪談成功的資訊長
分層架構
六角架構(埠口與轉接器)
服務導向架構
命令與查詢職責分離──CQRS
事件驅動架構
Fata Fabric 與網格分散式運算
本章小結
Chapter 5 實體
為什麼要使用實體
唯一識別值
探索實體與實體固有的特性
本章小結
Chapter 6 值物件
值物件的特性
最低限整合
以值物件表示標準類型
值物件的驗證測試
動手實作
值物件的保存
本章小結
Chapter 7 領域服務
辨認何者是領域服務(要先知道什麼不是領域服務)
確認對領域服務的需求
領域服務建模
測試領域服務
本章小結
Chapter 8 領域事件
領域事件的時機與原因
事件建模
由領域模型發布事件
發布事件給遠端 Bounded Context
Event Store
轉發庫存事件的架構風格
動手實作
本章小結
Chapter 9 模組
運用模組設計
模組命名的基本原則
模型模組的命名規範
敏捷式專案管理情境中的模組
其他架構層中的模組
模組優先,Bounded Context 在後
本章小結
Chapter 10 聚合
將聚合運用於 Scrum 核心領域
原則:在一致性邊界內建模真正的不變量
原則:設計小聚合
原則:以識別值存取其他聚合
原則:在邊界外部使用最終一致性
原則總有例外
從過程中深入理解
實作細節
本章小結
Chapter 11 工廠
領域模型中的工廠
聚合根中的工廠方法
服務中的工廠
本章小結
Chapter 12 Repository
集合導向 Repository
持久性導向的 Repository
額外行為
管理交易階段
型別階層
Repository 與資料存取物件(DAO)
Repository 的測試
本章小結
Chapter 13 整合 Bounded Contexts
整合的基礎知識
透過 RESTful 進行整合
透過訊息機制進行整合
本章小結
Chapter 14 應用程式
使用者介面
應用服務
結合多個 Bounded Context
基礎設施
企業應用服務元件容器
本章小結
Appendix A 聚合與事件溯源(A+ES)
應用服務內部
命令處理器(Command Handler)
Lambda 語法
並行控制
任何結構適用的 A+ES
效能
實作 Event Store
關聯式持久性
BLOB 大型物件持久性
專責聚合
讀取模型映射
與聚合設計結合
事件豐富度
可配合的工具與設計模式
建立合約精神的規範
單元測試與測試規範
事件溯源與函式語言