由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
醉染图书深入实践DDD 以DSL驱动复杂软件开发9787111677710
¥ ×1
部分概念
章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领域22
2.1.1自然键与代理键
2.1.2DDD实体的需要被用户看到
2.1.3什么时候使用代理键24
2.2、Local与Global26
.命令、事件与状态27
第3章CRS与EventSourcing29
3.1命令查询职责分离29
3.2事件溯源32
3.3From-Thru模式33
3.3.1示例:ProductPrice33
3.3.2示例:PartyRelationship35
3.4CRS、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..在复杂和简单中平衡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关于实体的85
7.4不变的实体89
7.5动态对象90
7.6继承与多态92
7.6.1使用关键字inheriteFo94
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命令与请求者119
8.2记录业务逻辑119
8.2.1关于accountingntityTypes120
8.2.2关于derivationLogic120
8..关于filter121
8.2.4使用关键字referenceFilter121
8.2.5业务逻辑代码中的变量122
8.2.6说说区块链1
8.3领域服务1
8.4在方法定义中使用关键字inheriteF25
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..处理值对象的集合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聚合对象的方法2
11.3处理继承225
11.3.1TPCH226
11.3.2TPCC227
11.3.3TPS228
11.4处理模式229
11.4.1处理账务模式229
11.4.2处理状态机模式4
2章处理领域服务
12.1处理数据的一致
12.1.1使用数据库事务实现一致240
12.1.2使用Saga实现一致241
12.2发布与处理领域事件243
12.2.1编写DDDML文档243
12.2.2生成的事件发布代码245
12..编写生产端聚合的业务逻辑253
12.2.4实现消费端领域事件的处理254
1.支持基于编制的Saga255
1..1编写DDDML文档255
1..2生成的Saga命令处理代码261
1..需要我们编写的Saga代码268
1..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..PATCH293
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使用Retrofit0
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..使用属层面的约束316
14.2.4使用UI层元数据317
14.2.5构建更实时的应用318
第四部分建模漫谈与DDD随想
5章找回敏捷的软件设计322
15.1重构不是灵药3
15.2数据建模示例:订单的装运与支付324
15.2.1订单与订单行项325
15.2.2订单与订单装运组327
15..订单与装运单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
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格