领域驱动设计是时下软件设计领域中的热门话题,它通过指导我们构建领域模型,来表达丰富的软件功能需求,并由此实现可以满足用户真正的需要的软件。然而在真实的实践过程中,由于不同的角色对于DDD的核心概念和主要工具的理解不同,常常会造成协作上的不一致。为了帮助和指导面向对象开发人员、系统分析人员和设计人员更加合理地组织工作,各有侧重、有条不紊地进行复杂系统的开发,并有效地建立丰富而实用的领域模型。本书的作者Vaughn Vernon(他也是《实现领域驱动设计》)将自己近年来在领域驱动设计领域的理解进一步提炼,并将本书以精粹的形式呈现给广大的读者。 本书的内容包括: * DDD对于广大读者的意义- DDD 对我而言 * 从战略层面进行设计 - 如何运用限界上下文和通用语言、子域、上下文映射 * 从战术层面进行设计 - 如何运用聚合、领域事件 * 相关辅助工具 - 加速和管理工具 当然,仅仅通过此书的阅读是无法深入的掌握领域驱动设计的精髓,无论你是什么经验水平或角色,请阅读本书并在项目中实践DDD。并在这之后,再重读此书,看看你从项目的经历中学到了什么,反复这样的循环,你将会获益匪浅。
Vaughn Vernon 是一位经验丰富的软件工匠,也是追求简化软件设计和实现的思想领袖。他是畅销书《实现领域驱动设计》和《响应式架构:消息模式Actor实现与Scala,Akka应用集成》的作者。他在全球面向数百位开发者教授过IDDD课程,并经常在行业会议上发表演讲。他对分布式计算、消息机制、特别是Actor模型非常有兴趣。Vaughn擅长领域驱动设计和使用Scala、Akka实现DDD方面的咨询。
覃宇,ThoughtWorks 高级咨询师,10余年移动应用开发经验,Android 技术专家,曾为AOSP贡献过测试用例;目前专注于移动应用的架构设计、自动化测试以及持续交付。译有《Kotlin实战》《Severless:无服务架构与AWS Lambda》等书。
目录
第1章 DDD对我而言 1
DDD很难掌握吗 2
优秀设计、糟糕设计和有效设计 3
战略设计 8
战术设计 9
学习过程与知识提炼 10
让我们开始吧! 11
第2章 运用限界上下文与通用语言进行战略设计 13
领域专家和业务驱动 20
案例分析 24
战略设计是必要的根基 28
在质疑中统一 32
发展通用语言 38
应用场景 42
如何持续 45
架构 46
本章小结 50
第3章 运用子域进行战略设计 51
什么是子域 52
子域类型 53
应对复杂性 54
本章小结 56
第4章 运用上下文映射进行战略设计 57
映射的种类 60
合作关系 60
共享内核 61
客户—供应商 62
跟随者 63
防腐层 64
开放主机服务 65
已发布语言 65
各行其道 66
大泥球 67
善用上下文映射 69
基于SOAP的RPC 70
RESTful HTTP 72
消息机制 74
上下文映射示例 79
本章小结 83
第5章 运用聚合进行战术设计 85
为什么使用它 86
聚合的经验法则 91
规则一:在聚合边界内保护业务规则不变性 92
规则二:聚合要设计得小巧 93
规则三:只能通过标识符引用其他聚合 95
规则四:利用最终一致性更新其他聚合 96
建立聚合模型 99
慎重选择抽象级别 104
大小适中的聚合 106
可测试的单元 108
本章小结 108
第6章 运用领域事件进行战术设计 111
设计、实现并运用领域事件 113
事件溯源 119
本章小结 121
第7章 加速和管理工具 123
事件风暴 124
其他工具 134
在敏捷项目中管理DDD 135
运用SWOT分析法 137
建模Spike和建模债务 139
任务识别与工作量估算 140
限制建模时间 143
如何实施 144
和领域专家打交道 145
本章小结 147
参考文献 148