• 深入实践DDD 以DSL驱动复杂软件开发 9787111677710 杨捷锋 机械工业出版社
21年品牌 40万+商家 超1.5亿件商品

深入实践DDD 以DSL驱动复杂软件开发 9787111677710 杨捷锋 机械工业出版社

当天发货,全新正版书。新华书店集团直发,凡是套装书,价格异常时,请咨询后下单。

66.9 6.8折 99 全新

库存16件

北京通州
认证卖家担保交易快速发货售后保障

作者杨捷锋

出版社机械工业出版社

ISBN9787111677710

出版时间2021-04

装帧平装

开本16开

定价99元

货号1202328231

上书时间2024-05-15

白湘云书社

十四年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
目录
部分概念

章DDD的关键概念2

1.1自顶而下、逐步求精3

1.1.1DDD开创全新分析流派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.5ER模型、OO模型和关系模型19

1.6概念建模与模型范式21

第2章其他DDD相关概念22

2.1领域ID22

2.1.1自然键与代理键23

2.1.2DDD实体的ID需要被最终用户看到23

2.1.3什么时候使用代理键24

2.2ID、LocalID与GlobalID26

2.3命令、事件与状态27

第3章CQRS与EventSourcing29

3.1命令查询职责分离29

3.2事件溯源32

3.3From-Thru模式33

3.3.1示例:ProductPrice33

3.3.2示例:PartyRelationship35

3.4CQRS、ES与流处理36

第二部分设计

第4章DDD的DSL是什么40

4.1为什么DDD需要DSL41

4.1.1为什么实现DDD那么难41

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

4.2需要什么样的DSL43

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

4.2.2DDD原生45

4.2.3在复杂和简单中平衡46

4.2.4通过DSL重塑软件开发过程48

4.3DDDML——DDD的DSL48

4.3.1DDDML的词汇表49

4.3.2DDDML的Schema51

4.4DDDML示例:Car52

4.4.1“对象”的名称在哪里55

4.4.2使用两种命名风格:camelCase与PascalCase55

4.4.3为何引入关键字itemType56

第5章限界上下文57

5.1DDDML文档的根结点下有什么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关于实体的ID85

7.4不变的实体89

7.5动态对象90

7.6继承与多态92

7.6.1使用关键字inheritedFrom94

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与请求者ID119

8.2记录业务逻辑119

8.2.1关于accountingQuantityTypes120

8.2.2关于derivationLogic120

8.2.3关于filter121

8.2.4使用关键字referenceFilter121

8.2.5业务逻辑代码中的变量122

8.2.6说说区块链123

8.3领域服务123

8.4在方法定义中使用关键字inheritedFrom125

8.5方法的安全性126

第9章模式128

9.1账务模式128

9.2状态机模式132

9.3树结构模式137

9.3.1简单的树137

9.3.2使用关键字structureType138

9.3.3使用关键字structureTypeFilter139

第三部分实践

0章处理限界上下文与值对象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

1章处理聚合与实体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.2Override聚合对象的方法223

11.3处理继承225

11.3.1TPCH226

11.3.2TPCC227

11.3.3TPS228

11.4处理模式229

11.4.1处理账务模式229

11.4.2处理状态机模式234

2章处理领域服务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支持基于编制的Saga255

12.3.1编写DDDML文档255

12.3.2生成的Saga命令处理代码261

12.3.3需要我们编写的Saga代码268

12.3.4需要我们实现的实体方法273

3章RESTfulAPI276

13.1RESTfulAPI的最佳实践276

13.1.1没有必要绞尽脑汁地寻找名词277

13.1.2尽可能使用HTTP作为封包277

13.1.3异常处理279

13.2聚合的RESTfulAPI280

13.2.1GET280

13.2.2PUT291

13.2.3PATCH293

13.2.4DELETE295

13.2.5POST295

13.2.6事件溯源API296

13.2.7树的查询接口297

13.3服务的RESTfulAPI297

13.4身份与访问管理299

13.4.1获取OAuth2.0BearerToken299

13.4.2在资源服务器上处理授权301

13.5生成ClientSDK302

13.5.1创建聚合实例303

13.5.2更新聚合实例304

13.5.3使用Retrofit2306

4章直达UI308

14.1两条路线的斗争309

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

14.1.2前端“只知道”RESTfulAPI312

14.2生成AdminUI312

14.2.1使用referenceFilter313

14.2.2展示派生的实体集合属性315

14.2.3使用属性层面的约束316

14.2.4使用UI层元数据317

14.2.5构建更实时的应用318

第四部分建模漫谈与DDD随想

5章找回敏捷的软件设计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.2BDD工具335

15.4.3BDD工具应与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认识一下Party348

15.7我们想要的敏捷设计350

6章说说SaaS351

16.1何为SaaS351

16.2多租户技术352

16.3构建成功的SaaS有何难353

16.3.1多租户系统的构建成本353

16.3.2难以满足的定制化需求353

16.3.3负重前行的传统软件公司355

16.4SaaS需要DDD355

7章更好的“锤子”356

17.1我们制作的一个DDDMLGUI工具357

17.1.1给领域建模提供起点357

17.1.2创建新的限界上下文358

17.1.3从OFBiz中“借鉴”数据模型359

17.1.4构建项目并运行应用361

17.1.5使用HTTPPUT方法创建实体362

17.1.6给聚合增加方法363

17.1.7生成限界上下文的DemoAdminUI368

17.1.8让不同层级的开发人员各尽其能369

17.2以统一语言建模370

附录DDDML示例与缩写表373

内容摘要
本书是拥有二十年商业软件开发经验及十年技术管理经验的资深技术专家呕心沥血之作,也是目前市场上少有的阐述如何通过使用领域专用语言(DSL)实现领域驱动设计(DDD)的图书。书中首先带领读者重温DDD在战术设计层面及战略设计层面上的部分重要概念,并简要介绍了自DDD社区兴起的一些软件架构模式。然后阐述如何设计一门DDD原生的DSL,包括这个DSL的规范支持哪些特性、如何帮助团队描述领域模型的方方面面、这些特性的选择基于何种考量等。然后在此基础上详细讲解了如何使用技术工具将描述领域模型的DSL文档直接转化为可以工作的软件代码,在这个过程中结合诸多来自商业软件开发工作中的真实案例,展示并分析了大量的关键代码,让读者可以深入地了解制造那些基于DSL的DDD技术工具的秘密。之后讲述了一些建模案例,并探讨了一些与DDD相关的其他话题,对读者开拓技术思维、更深刻地理解DDD有所助益。

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP