中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折!

超值優惠券
¥50
滿100可用 有效期2天

全場圖書通用(淘書團除外)

不再提示
關閉
歡迎光臨中圖網 請 | 注冊
> >
深入實踐DDD 以DSL驅動復雜軟件開發

包郵 深入實踐DDD 以DSL驅動復雜軟件開發

作者:楊捷鋒
出版社:機械工業出版社出版時間:2021-04-01
開本: 16開 頁數: 396
中 圖 價:¥69.3(7.0折) 定價  ¥99.0 登錄后可看到會員價
加入購物車 收藏
開年大促, 全場包郵
?新疆、西藏除外
本類五星書更多>

深入實踐DDD 以DSL驅動復雜軟件開發 版權信息

深入實踐DDD 以DSL驅動復雜軟件開發 本書特色

適讀人群 :1. 產品經理與系統分析師。產品經理不應該僅僅關注軟件的界面原型、用戶體驗,產品經理需要保證團隊所開發的是 “正確的軟件”。正確的軟件應該邏輯自洽,功能處處傳達出那個(1)領域驅動設計里程碑之作,資深技術專家兼技術管理者二十年工作經驗結晶 (2)深度解讀DDD思想,揭示使用 DSL實現DDD快速落地的方法與技巧,緩解復雜軟件開發之痛

深入實踐DDD 以DSL驅動復雜軟件開發 內容簡介

本書是擁有二十年商業軟件開發經驗及十年技術管理經驗的資深技術專家嘔心瀝血之作,也是目前市場上少有的闡述如何通過使用領域專用語言(DSL)實現領域驅動設計(DDD)的圖書。書中首先帶領讀者重溫DDD在戰術設計層面及戰略設計層面上的部分重要概念,并簡要介紹了自DDD社區興起的一些軟件架構模式。然后闡述如何設計一門DDD原生的DSL,包括這個DSL的規范支持哪些特性、如何幫助團隊描述領域模型的方方面面、這些特性的選擇基于何種考量等。然后在此基礎上詳細講解了如何使用技術工具將描述領域模型的DSL文檔直接轉化為可以工作的軟件代碼,在這個過程中結合諸多來自商業軟件開發工作中的真實案例,展示并分析了大量的關鍵代碼,讓讀者可以深入地了解制造那些基于DSL的DDD技術工具的秘密。之后講述了一些建模案例,并探討了一些與DDD相關的其他話題,對讀者開拓技術思維、更深刻地理解DDD有所助益。

深入實踐DDD 以DSL驅動復雜軟件開發 目錄

【**部分 概念】

第1章 DDD 的關鍵概念 2

1.1 自頂而下、逐步求精 3

1.1.1 DDD開創全新分析流派 3

1.1.2 什么是軟件的核心復雜性 4

1.2 什么是領域模型 4

1.3 戰術層面的關鍵概念 6

1.3.1 實體 6

1.3.2 值對象 6

1.3.3 聚合與聚合根、聚合內部實體 7

1.3.4 聚合的整體與局部 9

1.3.5 聚合是數據修改的單元 9

1.3.6 聚合分析是“拆分”的基礎 10

1.3.7 服務 12

1.4 戰略層面的關鍵概念 13

1.4.1 限界上下文 13

1.4.2 限界上下文與微服務 14

1.4.3 防腐層 15

1.4.4 統一語言 18

1.5 ER 模型、OO模型和關系模型 19

1.6 概念建模與模型范式 21

第2章 其他DDD相關概念 22

2.1 領域 ID 22

2.1.1 自然鍵與代理鍵 23

2.1.2 DDD 實體的 ID 需要被*終用戶看到 23

2.1.3 什么時候使用代理鍵 24

2.2 ID、Local ID 與 Global ID 26

2.3 命令、事件與狀態 27

第3章 CQRS 與 Event Sourcing 29

3.1 命令查詢職責分離 29

3.2 事件溯源 32

3.3 From-Thru 模式 33

3.3.1 示例:ProductPrice 33

3.3.2 示例:PartyRelationship 35

3.4 CQRS、ES 與流處理 36


【第二部分 設計】

第4章 DDD 的 DSL是什么 40

4.1 為什么 DDD 需要 DSL 41

4.1.1 為什么實現 DDD 那么難 41

4.1.2 搞定 DDD 的“錘子”在哪里 42

4.2 需要什么樣的 DSL 43

4.2.1 在“信仰”上保持中立 44

4.2.2 DDD 原生 45

4.2.3 在復雜和簡單中平衡 46

4.2.4 通過 DSL 重塑軟件開發過程 48

4.3 DDDML——DDD 的 DSL 48

4.3.1 DDDML 的詞匯表 49

4.3.2 DDDML 的 Schema 51

4.4 DDDML 示例:Car 52

4.4.1 “對象”的名稱在哪里 55

4.4.2 使用兩種命名風格:camelCase 與 PascalCase 55

4.4.3 為何引入關鍵字 itemType 56

第5章 限界上下文 57

5.1 DDDML 文檔的根結點下有什么 57

5.2 限界上下文的配置 59

5.3 名稱空間 62

5.3.1 再談 PascalCase 命名風格 62

5.3.2 注意兩個字母的首字母縮寫詞 63

5.4 關于模塊 64

第6章 值對象 67

6.1 領域基礎類型 68

6.1.1 例子:從 OFBiz 借鑒過來的類型系統 70

6.1.2 例子:任務的觸發器 73

6.2 數據值對象 75

6.3 枚舉對象 76

第7章 聚合與實體 79

7.1 用同一個結點描述聚合及聚合根 79

7.2 實體之間只有一種基本關系 82

7.3 關于實體的 ID 85

7.4 不變的實體 89

7.5 動態對象 90

7.6  繼承與多態 92

7.6.1 使用關鍵字 inheritedFrom 94

7.6.2 超對象 95

7.7 引用 97

7.7.1 定義實體的引用 97

7.7.2 屬性的類型與引用類型 101

7.8 基本屬性與派生屬性 102

7.8.1 類型為實體集合的派生屬性 103

7.8.2 類型為值對象的派生屬性 106

7.9 約束 107

7.9.1 在實體層面的約束 107

7.9.2 在屬性層面的約束 109

7.10 提供擴展點 110

第8章 超越數據模型 112

8.1 實體的方法 112

8.1.1 聚合根的方法 115

8.1.2 非聚合根實體的方法 116

8.1.3 屬性的命令 117

8.1.4 命令 ID 與請求者 ID 119

8.2 記錄業務邏輯 119

8.2.1 關于 accountingQuantityTypes 120

8.2.2 關于 derivationLogic 120

8.2.3 關于 filter 121

8.2.4 使用關鍵字referenceFilter 121

8.2.5 業務邏輯代碼中的變量 122

8.2.6 說說區塊鏈 123

8.3 領域服務 123

8.4 在方法定義中使用關鍵字 inheritedFrom 125

8.5 方法的安全性 126

第9章 模式 128

9.1 賬務模式 128

9.2 狀態機模式 132

9.3 樹結構模式 137

9.3.1 簡單的樹 137

9.3.2 使用關鍵字structureType 138

9.3.3 使用關鍵字structureTypeFilter 139


【第三部分 實踐】

第10章 處理限界上下文與值對象 142

10.1 項目文件 143

10.2 處理值對象 144

10.2.1 一個需要處理的數據值對象示例 145

10.2.2 使用 Hibernate 存儲數據值對象 146

10.2.3 處理值對象的集合 149

10.2.4 在 URL 中使用數據值對象 151

10.2.5 處理領域基礎類型 153

第11章 處理聚合與實體 161

11.1 生成聚合的代碼 162

11.1.1 接口 163

11.1.2 代碼中的命名問題 178

11.1.3 接口的實現 179

11.1.4 事件存儲與持久化 207

11.1.5 使用 Validation 框架 218

11.1.6 保證靜態方法與模型同步更新 220

11.1.7 不使用事件溯源 222

11.2 Override 聚合對象的方法 223

11.3 處理繼承 225

11.3.1 TPCH 226

11.3.2 TPCC 227

11.3.3 TPS 228

11.4 處理模式 229

11.4.1 處理賬務模式 229

11.4.2 處理狀態機模式 234

第12章 處理領域服務 238

12.1 處理數據的一致性 239

12.1.1 使用數據庫事務實現一致性 240

12.1.2 使用 Saga 實現*終一致性 241

12.2 發布與處理領域事件 243

12.2.1 編寫 DDDML 文檔 243

12.2.2 生成的事件發布代碼 245

12.2.3 編寫生產端聚合的業務邏輯 253

12.2.4 實現消費端領域事件的處理 254

12.3 支持基于編制的 Saga 255

12.3.1 編寫 DDDML 文檔 255

12.3.2 生成的 Saga 命令處理代碼 261

12.3.3 需要我們編寫的 Saga 代碼 268

12.3.4 需要我們實現的實體方法 273

第13章 RESTful API 276

13.1 RESTful API 的*佳實踐 276

13.1.1 沒有必要絞盡腦汁地尋找名詞 277

13.1.2 盡可能使用 HTTP作為封包 277

13.1.3 異常處理 279

13.2 聚合的 RESTful API 280

13.2.1 GET 280

13.2.2 PUT 291

13.2.3 PATCH 293

13.2.4 DELETE 295

13.2.5 POST 295

13.2.6 事件溯源 API 296

13.2.7 樹的查詢接口 297

13.3 服務的 RESTful API 297

13.4 身份與訪問管理 299

13.4.1 獲取 OAuth 2.0 Bearer Token 299

13.4.2 在資源服務器上處理授權 301

13.5 生成 Client SDK 302

13.5.1 創建聚合實例 303

13.5.2 更新聚合實例 304

13.5.3 使用 Retrofit2 306

第14章 直達 UI 308

14.1 兩條路線的斗爭 309

14.1.1 前端“知道”領域模型 309

14.1.2 前端“只知道”RESTful API 312

14.2 生成 Admin UI 312

14.2.1 使用 referenceFilter 313

14.2.2 展示派生的實體集合屬性 315

14.2.3 使用屬性層面的約束 316

14.2.4 使用 UI 層元數據 317

14.2.5 構建更實時的應用 318


【第四部分 建模漫談與 DDD 隨想】

第15章 找回敏捷的軟件設計 322

15.1 重構不是萬能靈藥 323

15.2 數據建模示例:訂單的裝運與支付 324

15.2.1 訂單與訂單行項 325

15.2.2 訂單與訂單裝運組 327

15.2.3 訂單與裝運單 328

15.2.4 訂單的項目發貨 329

15.2.5 訂單的支付 330

15.3 中臺是一個輪回 332

15.4 實例化需求與行為驅動測試 334

15.4.1  什么是實例化需求 334

15.4.2 BDD 工具 335

15.4.3 BDD 工具應與 DDD 相得益彰 336

15.4.4 不要在驗收測試中使用固件數據 336

15.4.5 制造“制造數據”的工具 337

15.5 要領域模型驅動,不要 UI 驅動 345

15.6 不要用“我”的視角設計核心模型 346

15.6.1 讓 User 消失 347

15.6.2 認識一下 Party 348

15.7 我們想要的敏捷設計 350

第16章 說說 SaaS 351

16.1 何為 SaaS 351

16.2 多租戶技術 352

16.3 構建成功的 SaaS 有何難 353

16.3.1 多租戶系統的構建成本 353

16.3.2 難以滿足的定制化需求 353

16.3.3 負重前行的傳統軟件公司 355

16.4 SaaS 需要 DDD 355

第17章 更好的“錘子” 356

17.1 我們制作的一個 DDDML GUI 工具 357

17.1.1 給領域建模提供起點 357

17.1.2 創建新的限界上下文 358

17.1.3 從 OFBiz 中“借鑒”數據模型 359

17.1.4 構建項目并運行應用 361

17.1.5 使用 HTTP PUT 方法創建實體 362

17.1.6 給聚合增加方法 363

17.1.7 生成限界上下文的Demo Admin UI 368

17.1.8 讓不同層級的開發人員各盡其能 369

17.2 以統一語言建模 370

附錄 DDDML 示例與縮寫表 373

展開全部

深入實踐DDD 以DSL驅動復雜軟件開發 作者簡介

楊捷鋒, 曾就職于南開戈德集團、普天集團、通路快建等公司。曾作為獨立技術顧問為海爾集團、沈陽飛機工業集團、上廣電NEC、天馬微電子等企業提供軟件開發與技術咨詢服務。目前在一家電商創業公司擔任技術負責人。有多個大型企業應用軟件的分析建模經驗,以及大型開發框架(ORM、IoC等)的架構經驗。多年來一直未脫離軟件開發一線工作,對軟件系統分析、數據建模、領域驅動設計、項目管理略有心得。

商品評論(0條)
暫無評論……
書友推薦
本類暢銷
編輯推薦
返回頂部
中圖網
在線客服
主站蜘蛛池模板: 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 超声波气象站_防爆气象站_空气质量监测站_负氧离子检测仪-风途物联网 | 圆窗水平仪|伊莉莎冈特elesa+ganter | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 工业CT-无锡璟能智能仪器有限公司| 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 精密冲床,高速冲床等冲压设备生产商-常州晋志德压力机厂 | 挖掘机挖斗和铲斗生产厂家选择徐州崛起机械制造有限公司 | 震动筛选机|震动分筛机|筛粉机|振筛机|振荡筛-振动筛分设备专业生产厂家高服机械 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 锂电池生产厂家-电动自行车航模无人机锂电池定制-世豹新能源 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 | 中国玩具展_玩具展|幼教用品展|幼教展|幼教装备展 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | 中矗模型-深圳中矗模型设计有限公司 | 淄博不锈钢无缝管,淄博不锈钢管-鑫门物资有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 冷凝锅炉_燃气锅炉_工业燃气锅炉改造厂家-北京科诺锅炉 | 美甲贴片-指甲贴片-穿戴美甲-假指甲厂家--薇丝黛拉 | 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 吉祥新世纪铝塑板_生产铝塑板厂家_铝塑板生产厂家_临沂市兴达铝塑装饰材料有限公司 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 颚式破碎机,圆锥破碎机,制砂机-新乡市德诚机电制造有限公司 | 捷码低代码平台 - 3D数字孪生_大数据可视化开发平台「免费体验」 | 电梯装饰-北京万达中意电梯装饰有限公司 | 挖掘机挖斗和铲斗生产厂家选择徐州崛起机械制造有限公司 | 福建省教师资格证-福建教师资格证考试网 |