首頁 搜尋 我的知識庫
實戰領域驅動設計:高效軟體開發的正確觀點、應用策略與實作指引

實戰領域驅動設計:高效軟體開發的正確觀點、應用策略與實作指引

作者: Vaughn Vernon
出版社: 博碩
出版日期: 2024/05/31
ISBN-13: 9786263338159
書店 1






內容描述


領域驅動設計之父 Eric Evans 親推的必看專書!
「搞笑談軟工」板主 Teddy 專文推薦

  關於 [名家名著] 30
  領域驅動設計(DDD)是一種軟體開發方法,只要實作得當,可以幫助開發人員設計出高品質的軟體模型,明確地反映出預期業務目標。然而能不能成功實作 DDD,卻是許多 DDD 開發人員所遭遇到的共同難題,對於新接觸 DDD 的人來說更是困難重重。作者 Vaughn Vernon 以一種獨到的方式將 DDD 中的抽象概念統整起來,並做出規範,而這些指導原則,正是實作 DDD 的最佳指引。作者用搭飛機來比喻接觸 DDD 的心情,將 Eric Evans 的《領域驅動設計: 軟體核心複雜度的解決方法》比喻為「從高處俯瞰的視角與寬廣的視野」,而本書則像是一張地圖,其作用是「帶領各位讀者緩緩降落、停穩飛機,走一條熟悉的路線安全到家」。

  《實戰領域驅動設計》以由上而下的方式說明 DDD,將戰略模式與基礎的戰術程式設計工具自然地結合起來。Vaughn Vernon 示範了如何在現代軟體架構中實作 DDD,強調業務領域概念的重要性與價值之同時,又不失技術層面上的務實考量。

  本書是基於 Eric Evans 的開創性著作《領域驅動設計》一書而來,作者透過我們都熟知的業務領域範例講解如何實作 DDD。所有的原則都搭配真實的 Java 程式範例,對於 C# 程式語言的開發人員也同樣適用,所有的範例內容都來自於一個設想案例:基於一個假想的大型 SaaS 多租戶 Scrum 協作系統的開發案例研究。

  本書作者將帶領讀者跨越「DDD-Lite」的侷限,不僅僅是將DDD作為一套技術工具運用,而是透過 Bounded Context、情境地圖、通用語言,充分運用 DDD 的「戰略設計模式」。而透過書中的技術與範例,可以加速軟體開發、提高品質,讓軟體更具靈活性與可擴展性,同時緊密地與業務目標保持一致。

  【本書精彩內容】
  ☑ 以正確的方法踏入 DDD 的世界,就能快速從中獲益
  ☑ 說明如何將 DDD 運用於不同的架構中,包括六角架構、SOA、REST、CQRS、事件驅動設計以及基於 Data Fabric/網格的架構
  ☑ 妥善地設計與運用實體,並了解何時該使用值物件而非實體
  ☑ 學習掌握與運用 DDD 強大的新技術——領域事件
  ☑ 利用 ORM 與 NoSQL 和其他資料庫等技術來實作 Repository

各界專業人士推薦

  「閱讀 DDD 藍皮書時搭配本書一起服用,學習效果更好。此外,本書還包含在 DDD 藍皮書中沒有提到,但後來 DDD 社群廣泛使用的模式,像是領域事件(Domain Event)、事件溯源(Event Sourcing)、六角架構、命令與查詢責任分離(CQRS)等,兼顧深度與廣度,誠意十足。」—Teddy Chen,部落格「搞笑談軟工」板主

  我個人的著作《領域驅動設計》(Domain-Driven Design)一書出版近九年,這些年已經累積了不少關於 DDD 的新知識,包括基礎知識新的介紹方式,而 Vaughn 這本書正是對 DDD 有最完整闡述的指引,更為我們帶來了全新的實作觀點。」—Eric Evans,《領域驅動設計》作者

  「對於期望提升技術的軟體開發人員來說,想在軟體開發過程中遵循最佳的專業實踐方法來設計與實作領域驅動的企業應用程式,《實戰領域驅動設計》傳授了過去幾十年領域驅動設計和企業應用程式架構社群努力耕耘的寶貴知識。」—Randy Stafford,自由架構設計師,Oracle Coherence 產品開發部門

  「對於渴望落實 DDD 設計的人來說,絕對不可錯過本書。」—Udi Daham,NServiceBus 創辦人


目錄大綱


推薦序
前言
致謝
本書閱讀指南

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 大型物件持久性
專責聚合
讀取模型映射
與聚合設計結合
事件豐富度
可配合的工具與設計模式
建立合約精神的規範
單元測試與測試規範
事件溯源與函式語言


作者介紹


作者簡介

Vaughn Vernon

  Vaughn Vernon 是一名資深的軟體工程師,在軟體設計、開發與架構方面擁有超過 25 年以上的豐富經驗,提倡將創新的方法運用於實作當中並簡化軟體設計。自 1980 年代以來,他一直在從事物件導向語言的程式設計,並於 1990 年代初期還以 Smalltalk 作為領域建模工具的時期開始就致力於領域驅動設計。他在國際間提供軟體開發的諮詢與授課服務,並在許多國家開設「實戰領域驅動設計」的訓練課程。






相關書籍

Windows 11制霸攻略:用圖解帶你速讀微軟最新功能

舞動倉頡輸入法

JavaScript × ChatGPT 第一次學就上手

APCS 完全攻略:從新手到高手,C++ 解題必備!(暢銷回饋版)