基本信息
名称: 实现领域驱动设计
作者信息: 作者: 沃恩•弗农 (Vaughn Vernon) [ 英文 pdf ]
简单介绍
著译俱佳 ThoughtWorks资深咨询师倾力译、校完整涵盖DDD各方面知识 提供大量示例代码案例贯穿全书 理论与实践紧密衔接之典范架构师、程序员境界提升不可或缺之必选书目
目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254
| 序…………… xix 前言…………. xxi 致谢………… xxxi 关于作者………………. xxxv 如何使用本书………xxxvii 第1章 DDD入门……………1 我能DDD吗?………………2 为什么我们需要DDD………….5 如何DDD…………………. 17 使用DDD的业务价值…………..22 1.你获得了一个非常有用的领域模型…………….22 2.你的业务得到了更准确的定义和理解…………23 3.领域专家可以为软件设计做出贡献………..23 4.更好的用户体验………………..23 5.清晰的模型边界…………………24 6.更好的企业架构…………..24 7.敏捷、迭代式和持续建模………………..24 8.使用战略和战术新工具……………………24 实施DDD所面临的挑战…………………25 虚构的案例,真实的实践………………. 33 本章小结…………………….36 第2章 领域、子域和限界上下文…………………37 总览………………….. 37 工作中的子域和限界上下文……………………….. 38 将关注点放在核心域上……………………….. 42 战略设计为什么重要……………….. 45 现实世界中领域和子域……………….48 理解限界上下文………………… 53 限界上下文不仅仅只包含模型………………… 57 限界上下文的大小…………………. 59 与技术组件保持一致………………. 61 示例上下文…………………… 62 协作上下文………………63 身份与访问上下文………………69 敏捷项目管理上下文…………….. 71 本章小结………………………………73 第3章 上下文映射图……………………….75 上下文映射图为什么重要…………………… 75 绘制上下文映射图………………….77 产品和组织关系……………………79 映射3个示例限界上下文……………………82 本章小结……………………….97 第4章 架构…………………..99 采访一个成功的CIO……………….. 100 分层…………………………… 104 依赖倒置原则……………….. 107 六边形架构(端口与适配器)………………… 110 面向服务架构…………………..114 REST…………………………..117 REST作为一种架构风格………………………117 RESTful HTTP服务器的关键方面 …………………………………. 118 RESTful HTTP客户端的关键方面 …………………………………. 119 REST和DDD………………… 120 为什么是REST?……………………. 121 命令和查询职责分离——CQRS…………….. 121 CQRS的各个方面…………………… 123 处理具有最终一致性的查询模型……………… 128 事件驱动架构………………. 129 管道和过滤器………………… 131 长时处理过程(也叫Saga)………………. 134 事件源…………………. 140 数据网织和基于网格的分布式计算………………….. 143 数据复制………………… 144 事件驱动网织和领域事件……………… 145 持续查询………………. 145 分布式处理…………………. 146 本章小结………………………. 148 第5章 实体……………………. 149 为什么使用实体……………………. 149 唯一标识………………………. 151 用户提供唯一标识……………………. 152 应用程序生成唯一标识……………………… 153 持久化机制生成唯一标识………………………. 156 另一个限界上下文提供唯一标识………………… 160 标识生成时间………………… 161 委派标识……………………. 163 标识稳定性…………………….. 165 发现实体及其本质特征……………………….. 167 揭开实体及其本质特征的神秘面纱…………….. 168 挖掘实体的关键行为…………………….. 172 角色和职责……………………. 176 创建实体……………………. 181 验证…………………………….. 183 跟踪变化………………………. 192 本章小结………………………….. 192 第6章 值对象………………… 193 值对象的特征…………………….. 194 度量或描述…………………….. 195 不变性……………………… 195 概念整体………………………….. 196 可替换性…………………….. 199 值对象相等性……………………..200 无副作用行为……………………….. 201 最小化集成………………204 用值对象表示标准类型……………………206 测试值对象…………………… 210 实现………………………… 214 持久化值对象…………….. 219 拒绝由数据建模泄漏带来的不利影响………………220 ORM与单个值对象………………………….. 221 多个值对象序列化到单个列中…………………224 使用数据库实体保存多个值对象………………..225 使用联合表保存多个值对象……………………..229 ORM与枚举状态对象………………………………….230 本章小结………………….. 233 第7章 领域服务……………………………235 什么是领域服务(首先,什么不是领域服务)……………… 237 请确定你是否需要一个领域服务………………………….. 238 建模领域服务……………… 241 独立接口有必要吗………………………..244 一个计算过程……………………..246 转换服务……………………249 为领域服务创建一个迷你层…………………….250 测试领域服务……………………….250 本章小结……………… 253 第8章 领域事件………………………….255 何时/为什么使用领域事件…………………….. 255 建模领域事件……………….. 258 创建具有聚合特征的领域事件………………. 263 身份标识……………………….264 从领域模型中发布领域事件………………………… 265 发送方………………. 265 订阅方…………………269 向远程限界上下文发布领域事件……………………….. 271 消息设施的一致性……………………… 271 自治服务和系统……………………….. 272 容许时延……………… 273 事件存储……………… 274 转发存储事件的架构风格……………………… 279 以REST资源的方式发布事件通知………………….. 279 通过消息中间件发布事件通知……………… 283 实现……………………….284 发布NotificationLog…………… 285 发布基于消息的事件通知…………………………290 本章小结……………………297 第9章 模块…………………………..299 通过模块完成设计…………………………….299 模块的基本命名规范……………………..302 领域模型的命名规范………………………302 敏捷项目管理上下文中的模块…………………………305 其他层中的模块………………308 先考虑模块,再是限界上下文………………………….309 本章小结……………………. 310 第10章 聚合…………………. 311 在Scrum核心领域中使用聚合…………………… 312 第一次尝试:臃肿的聚合………………….. 313 第二次尝试:多个聚合……………………… 314 原则:在一致性边界之内建模真正的不变条件…………….317 原则:设计小聚合……………………….. 319 不要相信每一个用例………………………. 321 原则:通过唯一标识引用其他聚合……………………. 322 通过标识引用使多个聚合协同工作 ……………………………….. 324 建模对象导航性………………………. 325 可伸缩性和分布式……………………….. 326 原则:在边界之外使用最终一致性……………………….. 327 谁的任务?………………………. 328 打破原则的理由……………………. 329 理由之一:方便用户界面…………………………… 329 理由之二:缺乏技术机制……………………….. 330 理由之三:全局事务…………………………………… 331 理由之四:查询性能……………………………. 331 遵循原则……………….. 332 通过发现,深入理解…………………………. 332 重新思考设计…………………………. 332 估算聚合成本……………………….. 334 常见用例场景…………………… 335 内存消耗………………………. 336 探索另外的设计…………………………….. 337 实现最终一致性………………………… 338 这是Scrum团队成员的任务吗?……………………. 339 决定的时候到了………………………… 341 实现…………………………………. 341 创建具有唯一标识的根实体…………………… 342 优先使用值对象…………………. 343 使用迪米特法则和“告诉而非询问”原则 ……………344 乐观并发……………346 避免依赖注入…………….348 本章小结………………………….. 349 第11章 工厂…………….. 351 领域模型中的工厂…………….. 351 聚合根中的工厂方法……………………….. 352 创建CalendarEntry实例………………. 353 创建Discussion实例………………………. 357 领域服务中的工厂…………………….. 358 本章小结…………………….. 361 第12章 资源库………………………363 面向集合资源库………………………364 Hibernate实现…………………. 369 TopLink实现……………….. 377 面向持久化资源库…………………… 379 Coherence实现………………………. 381 MongoDB实现……………………. 386 额外的行为……………………………….. 391 管理事务…………………………… 393 警告…………………………… 397 类型层级…………………………. 397 资源库 vs 数据访问对象(DAO)…………………………400 测试资源库…………………………………… 401 以内存实现进行测试……………….404 本章小结…………………………..407 第13章 集成限界上下文………………………….409 集成基础知识………………………………409 分布式系统之间存在根本性区别…………………..411 跨系统边界交换信息………………………….411 通过REST资源集成限界上下文……………………. 417 实现REST资源…………………….. 418 使用防腐层实现REST客户端……….. 421 通过消息集成限界上下文……………. 428 从Scrum的产品负责人和团队成员处得到持续通知 ……………….. 428 你能处理这样的职责吗?………………… 434 长时处理过程,以及避免职责…………. 439 长时处理过程的状态机和超时跟踪器 ……………………………. 450 设计一个更复杂的长时处理过程 ……………………………………460 当消息机制或你的系统不可用时 …………………………………….464 本章小结……………………………465 第14章 应用程序………………467 用户界面……………………………..469 渲染领域对象…………. 470 渲染数据传输对象………………. 471 使用调停者发布聚合的内部状态 …………………………………… 471 通过领域负载对象渲染聚合实例 …………………………………… 472 聚合实例的状态展现……………………….. 473 用例优化资源库查询…………………. 474 处理不同类型的客户端………………. 474 渲染适配器以及处理用户编辑…………. 475 应用服务 …………………………………….. 478 示例应用服务 ………………………….. 478 解耦服务输出 …………………485 组合多个限界上下文 …………………487 基础设施 ………………………….489 企业组件容器 ………………..490 本章小结 ………………..494 附录A 聚合与事件源:A+ES ……………………..495 应用服务内部 ………………….. 496 命令处理器 …………………505 Lambda语法……………….508 并发控制 ………………….. 510 A+ES所带来的结构自由性 ………….. 513 性能 ………………………. 513 实现事件存储 ………………… 516 关系型持久化 ……………… 520 BLOB持久化 …………………. 522 专注的聚合 ………………………. 523 读模型投射 ……………………… 524 与聚合设计一道使用 ……………. 527 增强事件 ……………………… 527 工具和模式 ………………. 529 事件序列器 ………. 530 事件不变性 ……………. 531 值对象 ………………… 531 协议生成 ……………….. 534 单元测试和需求规范 ………….. 535 事件源和函数式语言 ………. 536 参考文献 ………………539
|
亚马逊链接
