幫助中心 | 我的帳號 | 關於我們

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

  • 作者:編者:彭晨陽|責編:趙小花
  • 出版社:機械工業
  • ISBN:9787111661122
  • 出版日期:2020/08/01
  • 裝幀:平裝
  • 頁數:341
人民幣:RMB 119 元      售價:
放入購物車
加入收藏夾

內容大鋼
    領域驅動設計簡稱DDD,本書前6章全面解析了DDD的分析方法和技術架構,包括領域驅動設計基礎、領域驅動戰略設計(有界上下文和統一語言)、聚合設計、實體和值對象、CQRS架構和事件溯源,第7章使用經典的貨物運輸系統案例進行了完整、詳細的綜合演示。
    本書同時引入了DDD的最新發展成果,如事件風暴建模,並以此建模方式替代傳統的DDD建模方式講解了多個案例。本書還涉及大量軟體系統實現相關的技術和架構,讀者在學習DDD的同時,也可以掌握這些技術、架構在DDD實現中的靈活應用。
    另外,本書每個概念或方法的講解過程都穿插了具體實例,以方便讀者結合實例進行學習;第2?7章每章最後都有總結與拓展,將本章涉及的案例和知識進行總結,並引入國際DDD專家的心得經驗,試圖告訴讀者一條DDD實戰中行之有效的途徑。
    本書主要面向擁有一定實踐經驗的軟體產品經理、領域專家、軟體設計開發相關從業人員,相關初級從業者也可閱讀本書。

作者介紹
編者:彭晨陽|責編:趙小花
    彭晨陽(板橋/banq),解道(Jdon)網站創建者。具有近30年的軟體系統設計與開發經驗,並專註于DDD 10余年。     曾為近百家企業提供培訓咨詢服務,包含華為、阿里等著名企業。     擅長系統架構設計與實現,熟悉各種設計模式與框架,以及併發編程和微服務、區塊鏈等分散式系統與事務的設計實現。

目錄
前言
第1章  領域驅動設計基礎
  1.1  領域驅動設計的起源與發展
    1.1.1  程序員為難之處
    1.1.2  技術負債與軟體質量
    1.1.3  ER數據建模與面向對象建模
    1.1.4  DDD的誕生和發展
  1.2  領域驅動設計的特點
    1.2.1  發現和理解問題
    1.2.2  領域即邊界
    1.2.3  解決複雜性
    1.2.4  新的數據結構設計方式
    1.2.5  需要注重產品的程序員
  1.3  領域驅動設計的難點
    1.3.1  業務策略和業務規則
    1.3.2  統一語言與有界上下文
    1.3.3  領域模型的提煉
  1.4  領域驅動設計的應用場景
    1.4.1  哪些應用不適合?
    1.4.2  適合微服務架構
第2章  領域驅動戰略設計
  2.1  有界上下文
    2.1.1  統一語言:統一項目中的交流語言
    2.1.2  如何發現有界上下文和統一語言?
    2.1.3  有界上下文之間的關係
    2.1.4  核心子域、支持子域與通用子域
    2.1.5  實例解析:電費結算系統
  2.2  按時間線發現有界上下文
    2.2.1  UML時序圖
    2.2.2  實例解析:電商領域之商品管理上下文
  2.3  通過領域故事或流程發現有界上下文
  2.4  通過事件風暴會議發現有界上下文
    2.4.1  領域事件
    2.4.2  命令
    2.4.3  事件風暴建模法
    2.4.4  實例解析:一個典型的事件風暴建模議程
  2.5  業務平台與中台設計
  2.6  總結與拓展
第3章  聚合設計
  3.1  聚合設計的概念
    3.1.1  高聚合低關聯
    3.1.2  聚合的邏輯一致性
  3.2  設計聚合的幾種方法
    3.2.1  改變主謂賓順序
    3.2.2  根據領域事件設計聚合
    3.2.3  根據單一職責設計聚合
    3.2.4  按時間邊界設計聚合
    3.2.5  通過事務邊界設計聚合
    3.2.6  通過ER模型設計聚合
  3.3  實例解析:訂單系統中的聚合設計

    3.3.1  信息擁有者模式
    3.3.2  引用模式
    3.3.3  奧卡姆剃刀原理
    3.3.4  控制者模式
    3.3.5  訂單狀態集中控制實現
    3.3.6  做什麼和怎麼做的分離
    3.3.7  在服務中驗證聚合
    3.3.8  Spring Boot實現
  3.4  總結與拓展
第4章  實體和值對象
  4.1  失血/貧血模型
  4.2  實體
    4.2.1  實體的標識
    4.2.2  實體的設計
    4.2.3  實體對象的創建
  4.3  值對象
    4.3.1  值對象與實體的區別
    4.3.2  用值對象重構
  4.4  領域服務
    4.4.1  領域服務的特徵
    4.4.2  領域服務與應用服務
  4.5  倉儲
    4.5.1  自行實現倉儲
    4.5.2  結合Builder模式實現倉儲
  4.6  充血模型的設計原則
    4.6.1  將公有setter方法變為私有
    4.6.2  注重對象的構建
  4.7  實例解析:論壇系統實體和值對象設計
    4.7.1  聚合根實體是什麼?
    4.7.2  值對象的設計
    4.7.3  狀態設計
    4.7.4  發帖功能實現
    4.7.5  雙聚合根
    4.7.6  分配職責行為
    4.7.7  構建對象必須遵循唯一性
  4.8  總結與拓展
第5章  CQRS架構
  5.1  DDD架構介紹
    5.1.1  MVC模式
    5.1.2  傳統三層架構
    5.1.3  傳統DDD分層架構
    5.1.4  清潔架構
    5.1.5  六邊形架構
    5.1.6  垂直切片架構
  5.2  CQRS架構的特點
  5.3  命令和查詢分離
    5.3.1  查詢模型實現
    5.3.2  命令模型實現
    5.3.3  Command對象
    5.3.4  命令和查詢的協作

  5.4  不同的數據訪問方式
    5.4.1  查詢端存儲實現
    5.4.2  規格模式
    5.4.3  命令與查詢的同步
  5.5  CAP定理
  5.6  領域事件實現數據同步
  5.7  實例解析:使用Axon框架實現CQRS
    5.7.1  命令端實現
    5.7.2  查詢端實現
  5.8  總結與拓展
第6章  事件溯源
  6.1  什麼是事件溯源?
  6.2  基於事件溯源的聚合根設計
    6.2.1  用事件替代狀態
    6.2.2  活動與事件
  6.3  事件溯源的優點
    6.3.1  替代分散式事務
    6.3.2  事件日誌的順序性
    6.3.3  基於事件日誌的消息系統
  6.4  微服務中的分散式事務實現
    6.4.1  引入Saga模式
    6.4.2  Saga分散式事務原理
    6.4.3  實例解析:賬戶轉賬
  6.5  使用Apache Kafka實現事件溯源
  6.6  投射模式
  6.7  更改數據捕獲(CDC)
  6.8  總結與拓展
第7章  貨物運輸系統
  7.1  領域描述
  7.2  從流程中發現領域事件
    7.2.1  受理流程
    7.2.2  作業流程
  7.3  概念挖掘
    7.3.1  劃分有界上下文
    7.3.2  預訂受理上下文
    7.3.3  運輸作業上下文
  7.4  預訂受理的聚合設計
    7.4.1  聚合的發現和命名
    7.4.2  聚合設計
    7.4.3  狀態設計
    7.4.4  命令與事件設計
    7.4.5  代碼實現
    7.4.6  設計和實現的差異
  7.5  運輸作業的聚合設計
    7.5.1  命令、事件和聚合
    7.5.2  有界上下文映射
    7.5.3  聚合重構設計
  7.6  總結與拓展

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032