复杂软件设计之道:领域驱动设计全面解析与实战
- ISBN:9787111661122
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:352
- 出版时间:2020-08-01
- 条形码:9787111661122 ; 978-7-111-66112-2
本书特色
适读人群 :主要面向拥有一定实践经验的软件产品经理、领域专家、软件设计开发相关从业人员,相关初级从业者也可阅读本书。为读者提供更加清晰的DDD知识脉络,各个击破、详细解析; 讲解过程伴随实例代码,让读者的学习过程更加轻松; 包含原著以外的DDD社区新发展,基于截至2020年初的全新、全面DDD思想/方法体系编写; 推荐作为原著学习伴侣,在实践中反复学习与思考。
内容简介
领域驱动设计简称DDD,《复杂软件设计之道:领域驱动设计全面解析与实战》前6章全面解析了DDD的分析方法和技术架构,包括领域驱动设计基础、领域驱动战略设计(有界上下文和统一语言)、聚合设计、实体和值对象、CQRS架构和事件溯源,第7章使用经典的货物运输系统案例进行了完整、详细的综合演示。 《复杂软件设计之道:领域驱动设计全面解析与实战》同时引入了DDD的*新发展成果,如事件风暴建模,并以此建模方式替代传统的DDD建模方式讲解了多个案例。还涉及大量软件系统实现相关的技术和架构,读者在学习DDD的同时,也可以掌握这些技术、架构在DDD实现中的灵活应用。 另外,每个概念或方法的讲解过程都穿插了具体实例,以方便读者结合实例进行学习;第2~7章每章*后都有总结与拓展,将本章涉及的案例和知识进行总结,并引入靠前DDD专家的心得经验,试图告诉读者一条DDD实战中行之有效的途径。 《复杂软件设计之道:领域驱动设计全面解析与实战》主要面向拥有一定实践经验的软件产品经理、领域专家、软件设计开发相关从业人员,相关初级从业者也可阅读本书。
目录
第1章 领域驱动设计基础1
11 领域驱动设计的起源与发展1
111 程序员为难之处1
112 技术负债与软件质量3
113 ER数据建模与面向对象建模4
114 DDD的诞生和发展6
12 领域驱动设计的特点9
121 发现和理解问题10
122 领域即边界13
123 解决复杂性15
124 新的数据结构设计方式17
125 需要注重产品的程序员18
13 领域驱动设计的难点20
131 业务策略和业务规则21
132 统一语言与有界上下文25
133 领域模型的提炼26
14 领域驱动设计的应用场景29
141 哪些应用不适合?30
142 适合微服务架构30
第2章 领域驱动战略设计31
21 有界上下文31
211 统一语言:统一项目中的交流
语言32
212 如何发现有界上下文和统一
语言?34
213 有界上下文之间的关系36
214 核心子域、支持子域与通用
子域37
215 实例解析:电费结算系统38
22 按时间线发现有界上下文40
221 UML时序图40
222 实例解析:电商领域之商品管理
上下文41
23 通过领域故事或流程发现有界
上下文45
24 通过事件风暴会议发现有界
上下文48
241 领域事件50
242 命令51
243 事件风暴建模法53
244 实例解析:一个典型的事件风暴
建模议程56
25 业务平台与中台设计60
26 总结与拓展62
第3章 聚合设计68
31 聚合设计的概念68
311 高聚合低关联71
312 聚合的逻辑一致性74
32 设计聚合的几种方法77
321 改变主谓宾顺序78
322 根据领域事件设计聚合79
323 根据单一职责设计聚合81
324 按时间边界设计聚合83
325 通过事务边界设计聚合87
326 通过ER模型设计聚合89
33 实例解析:订单系统中的聚合
设计95
331 信息拥有者模式97
332 引用模式99
333 奥卡姆剃刀原理100
334 控制者模式101
335 订单状态集中控制实现103
336 做什么和怎么做的分离106
337 在服务中验证聚合107
338 Spring Boot实现110
34 总结与拓展115
第4章 实体和值对象121
41 失血/贫血模型121
42 实体124
421 实体的标识125
422 实体的设计126
423 实体对象的创建128
43 值对象131
431 值对象与实体的区别134
432 用值对象重构138
44 领域服务140
441 领域服务的特征141
442 领域服务与应用服务144
45 仓储147
451 自行实现仓储148
452 结合Builder模式实现仓储151
46 充血模型的设计原则154
461 将公有setter方法变为私有155
462 注重对象的构建157
47 实例解析:论坛系统实体和
值对象设计159
471 聚合根实体是什么?161
472 值对象的设计164
473 状态设计167
474 发帖功能实现170
475 双聚合根173
476 分配职责行为176
477 构建对象必须遵循唯一性179
48 总结与拓展184
第5章 CQRS架构186
51 DDD架构介绍187
511 MVC模式187
512 传统三层架构188
513 传统DDD分层架构191
514 清洁架构194
515 六边形架构198
516 垂直切片架构201
52 CQRS架构的特点203
53 命令和查询分离205
531 查询模型实现206
532 命令模型实现210
533 Command对象212
534 命令和查询的协作216
54 不同的数据访问方式219
541 查询端存储实现220
542 规格模式221
543 命令与查询的同步224
55 CAP定理226
56 领域事件实现数据同步227
57 实例解析:使用Axon框架
实现CQRS231
571 命令端实现233
572 查询端实现236
58 总结与拓展237
第6章 事件溯源241
61 什么是事件溯源?242
62 基于事件溯源的聚合根设计249
621 用事件替代状态249
622 活动与事件253
63 事件溯源的优点260
631 替代分布式事务261
632 事件日志的顺序性263
633 基于事件日志的消息系统265
64 微服务中的分布式事务
实现266
641 引入Saga模式267
642 Saga分布式事务原理267
643 实例解析:账户转账271
65 使用Apache Kafka实现事件
溯源275
66 投射模式280
67 更改数据捕获(CDC)282
68 总结与拓展285
第7章 货物运输系统290
71 领域描述290
72 从流程中发现领域事件294
721 受理流程295
722 作业流程298
73 概念挖掘301
731 划分有界上下文302
732 预订受理上下文304
733 运输作业上下文306
74 预订受理的聚合设计309
741 聚合的发现和命名309
742 聚合设计313
743 状态设计316
744 命令与事件设计317
745 代码实现320
746 设计和实现的差异325
75 运输作业的聚合设计327
751 命令、事件和聚合328
752 有界上下文映射331
753 聚合重构设计334
76 总结与拓展336
作者简介
作者彭晨阳,常用网名板桥(bang),DDD等软件架构专研网站——解道(Jdon)的创办者,长期关注国内外软件架构思想和设计开发的新动向,自DDD提出以来,持续研究与实践DDD。 行业经验——具有近30年的软件系统设计与开发经验,以及丰富的领域实战经验,包括ERP、电子商务、政务、电力、银行、大型游戏等。 培训经历——致力于传播软件设计开发新思想、新技术,曾为近百家企业提供培训咨询服务,包括华为、阿里等企业。 擅长方向——系统架构设计与实现,设计模式与框架,并发编程和微服务、区块链等分布式系统与事务。擅长复杂系统的软件架构和领域建模。
-
全图解零基础word excel ppt 应用教程
¥15.6¥48.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥12.7¥39.8 -
机器学习
¥59.4¥108.0 -
深度学习的数学
¥43.5¥69.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥37.7¥65.0 -
情感计算
¥66.8¥89.0 -
LINUX企业运维实战(REDIS+ZABBIX+NGINX+PROMETHEUS+GRAFANA+LNMP)
¥48.3¥69.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
LINUX实战——从入门到精通
¥48.3¥69.0 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
数据驱动的工业人工智能:建模方法与应用
¥68.3¥99.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
UN NX 12.0多轴数控编程案例教程
¥24.3¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
Go 语言运维开发 : Kubernetes 项目实战
¥38.7¥79.0