彭晨阳(板桥/banq),解道(Jdon)网站创建者。具有近30年的软件系统设计与开发经验,并专注于DDD 10余年。
曾为近百家企业提供培训咨询服务,包含华为、阿里等有名企业。
擅长系统架构设计与实现,熟悉各种设计模式与框架,以及并发编程和微服务、区块链等分布式系统与事务的设计实现。
网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 复杂软件设计之道 领域驱动设计全面解析与实战 |
分类 | 教育考试-考试-计算机类 |
作者 | 彭晨阳 编 |
出版社 | 机械工业出版社 |
下载 | ![]() |
简介 | 作者简介 彭晨阳(板桥/banq),解道(Jdon)网站创建者。具有近30年的软件系统设计与开发经验,并专注于DDD 10余年。 曾为近百家企业提供培训咨询服务,包含华为、阿里等有名企业。 擅长系统架构设计与实现,熟悉各种设计模式与框架,以及并发编程和微服务、区块链等分布式系统与事务的设计实现。 目录 前言 章领域驱动设计基础1 1.1领域驱动设计的起源与发展1 1.1.1程序员为难之处1 1.1.2技术负债与软件质量3 1.1.3ER数据建模与面向对象建模4 1.1.4DDD的诞生和发展6 1.2领域驱动设计的特点9 1.2.1发现和理解问题10 1.2.2领域即边界13 1.2.3解决复杂性15 1.2.4新的数据结构设计方式17 1.2.5需要注重产品的程序员18 1.3领域驱动设计的难点20 1.3.1业务策略和业务规则21 1.3.2统一语言与有界上下文25 1.3.3领域模型的提炼26 1.4领域驱动设计的应用场景29 1.4.1哪些应用不适合?30 1.4.2适合微服务架构30 第2章领域驱动战略设计31 2.1有界上下文31 2.1.1统一语言:统一项目中的交流语言32 2.1.2如何发现有界上下文和统一语言?34 2.1.3有界上下文之间的关系36 2.1.4核心子域、支持子域与通用子域37 2.1.5实例解析:电费结算系统38 2.2按时间线发现有界上下文40 2.2.1UML时序图40 2.2.2实例解析:电商领域之商品管理上下文41 2.3通过领域故事或流程发现有界上下文45 2.4通过事件风暴会议发现有界上下文48 2.4.1领域事件50 2.4.2命令51 2.4.3事件风暴建模法53 2.4.4实例解析:一个典型的事件风暴建模议程56 2.5业务平台与中台设计60 2.6总结与拓展62 第3章聚合设计68 3.1聚合设计的概念68 3.1.1高聚合低关联71 3.1.2聚合的逻辑一致性74 3.2设计聚合的几种方法77 3.2.1改变主谓宾顺序78 3.2.2根据领域事件设计聚合79 3.2.3根据单一职责设计聚合81 3.2.4按时间边界设计聚合83 3.2.5通过事务边界设计聚合87 3.2.6通过ER模型设计聚合89 3.3实例解析:订单系统中的聚合设计95 3.3.1信息拥有者模式97 3.3.2引用模式99 3.3.3奥卡姆剃刀原理100 3.3.4控制者模式101 3.3.5订单状态集中控制实现103 3.3.6做什么和怎么做的分离106 3.3.7在服务中验证聚合107 3.3.8SpringBoot实现110 3.4总结与拓展115 第4章实体和值对象121 4.1失血/贫血模型121 4.2实体124 4.2.1实体的标识125 4.2.2实体的设计126 4.2.3实体对象的创建128 4.3值对象131 4.3.1值对象与实体的区别134 4.3.2用值对象重构138 4.4领域服务140 4.4.1领域服务的特征141 4.4.2领域服务与应用服务144 4.5仓储147 4.5.1自行实现仓储148 4.5.2结合Builder模式实现仓储151 4.6充血模型的设计原则154 4.6.1将公有setter方法变为私有155 4.6.2注重对象的构建157 4.7实例解析:论坛系统实体和值对象设计159 4.7.1聚合根实体是什么?161 4.7.2值对象的设计164 4.7.3状态设计167 4.7.4发帖功能实现170 4.7.5双聚合根173 4.7.6分配职责行为176 4.7.7构建对象必须遵循唯一性179 4.8总结与拓展184 第5章CQRS架构186 5.1DDD架构介绍187 5.1.1MVC模式187 5.1.2传统三层架构188 5.1.3传统DDD分层架构191 5.1.4清洁架构194 5.1.5六边形架构198 5.1.6垂直切片架构201 5.2CQRS架构的特点203 5.3命令和查询分离205 5.3.1查询模型实现206 5.3.2命令模型实现210 5.3.3Command对象212 5.3.4命令和查询的协作216 5.4不同的数据访问方式219 5.4.1查询端存储实现220 5.4.2规格模式221 5.4.3命令与查询的同步224 5.5CAP定理226 5.6领域事件实现数据同步227 5.7实例解析:使用Axon框架实现CQRS231 5.7.1命令端实现233 5.7.2查询端实现236 5.8总结与拓展237 第6章事件溯源241 6.1什么是事件溯源?242 6.2基于事件溯源的聚合根设计249 6.2.1用事件替代状态249 6.2.2活动与事件253 6.3事件溯源的优点260 6.3.1替代分布式事务261 6.3.2事件日志的顺序性263 6.3.3基于事件日志的消息系统265 6.4微服务中的分布式事务实现266 6.4.1引入Saga模式267 6.4.2Saga分布式事务原理267 6.4.3实例解析:账户转账271 6.5使用ApacheKafka实现事件溯源275 6.6投射模式280 6.7更改数据捕获(CDC)282 6.8总结与拓展285 第7章货物运输系统290 7.1领域描述290 7.2从流程中发现领域事件294 7.2.1受理流程295 7.2.2作业流程298 7.3概念挖掘301 7.3.1划分有界上下文302 7.3.2预订受理上下文304 7.3.3运输作业上下文306 7.4预订受理的聚合设计309 7.4.1聚合的发现和命名309 7.4.2聚合设计313 7.4.3状态设计316 7.4.4命令与事件设计317 7.4.5代码实现320 7.4.6设计和实现的差异325 7.5运输作业的聚合设计327 7.5.1命令、事件和聚合328 7.5.2有界上下文映射331 7.5.3聚合重构设计334 7.6总结与拓展336 内容推荐 领域驱动设计简称DDD,《复杂软件设计之道:领域驱动设计全面解析与实战》前6章全面解析了DDD的分析方法和技术架构,包括领域驱动设计基础、领域驱动战略设计(有界上下文和统一语言)、聚合设计、实体和值对象、CQRS架构和事件溯源,第7章使用经典的货物运输系统案例进行了完整、详细的综合演示。 《复杂软件设计之道:领域驱动设计全面解析与实战》同时引入了DDD的*新发展成果,如事件风暴建模,并以此建模方式替代传统的DDD建模方式讲解了多个案例。还涉及大量软件系统实现相关的技术和架构,读者在学习DDD的同时,也可以掌握这些技术、架构在DDD实现中的灵活应用。 另外,每个概念或方法的讲解过程都穿插了具体实例,以方便读者结合实例进行学习;第2~7章每章*后都有总结与拓展,将本章涉及的案例和知识进行总结,并引入靠前DDD专家的心得经验,试图告诉读者一条DDD实战中行之有效的途径。 《复杂软件设计之道:领域驱动设计全面解析与实战》主要面向拥有一定实践经验的软件产品经理、领域专家、软件设计开发相关从业人员,相关初级从业者也可阅读本书。 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。