所有分类
  • 所有分类
  • 精品课程
  • 课件资料
  • 标准资料
  • 资料手册
  • 图纸模型
  • 解说文案

复杂软件设计之道:领域驱动设计全面解析与实战 彭晨阳 2020.8

复杂软件设计之道:领域驱动设计全面解析与实战 

作 者:彭晨阳 著 

出版时间:2020  

内容简介 

  领域驱动设计简称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 

书籍下载:

资源下载
下载价格10 金币
VIP免费
0
没有账号?注册  忘记密码?

社交账号快速登录