搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
实现领域驱动设计(博文视点出品)
0.00     定价 ¥ 128.00
图书来源: 浙江图书馆(由JD配书)
此书还可采购19本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787121224485
  • 作      者:
    Vaughn,Vernon(沃恩.弗农)
  • 译      者:
    滕云
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2021-02-01
收藏
作者简介
Vaughn Vernon是一个经验丰富的软件工匠,在软件设计、开发和架构方面拥有超过25年的从业经验。 他提倡通过创新来简化软件的设计和实现。从20世纪80年代开始,他便开始使用面向对象语言进行编程;在90年代早期,他便在领域建模中应用了领域驱动设计,那时他使用的是Smalltalk语言。 他在全球范围之内提供软件咨询和演讲,此外,他还在许多国家教授《实现领域驱动设计》的课程。
滕云,ThoughtWorks软件工程师。当初抱着“非飞行器设计专业不读”的理想加幻想考入西北工业大学,却不料学起了汽车专业。在尝尽了“从天上掉到地下”的滋味之后,又转行躬耕于软件开发。目前主要从事银行、保险等领域的企业级软件开发,感兴趣的技术领域包括Java EE、Linux、领域驱动设计和构建自动化等。
展开
内容介绍
本书分别从战略和战术层面详尽地讨论了如何实现DDD,其中包含了大量的最佳实践、设计准则和对一些问题的折中性讨论。全书共分为14章,在DDD战略部分,本书向我们讲解了领域、限界上下文、上下文映射图和架构等内容,战术部分包括实体、值对象、领域服务、领域事件、聚合和资源库等内容。一个虚构的案例研究贯穿全书,这对于实例讲解DDD实现来说非常有用。
展开
目录
目录
序 ....................................................................................... 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
x 目录
理解限界上下文 ................................................................................ 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
目录xi
管道和过滤器 ......................................................................... 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
xii 目录
概念整体 ................................................................................. 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
目录xiii
从领域模型中发布领域事件 .......................................................... 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
xiv 目录
通过标识引用使多个聚合协同工作 ...................................... 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
目录xv
领域服务中的工厂 ......................................................................... 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
xvi 目录
当消息机制或你的系统不可用时 ...........................................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
目录xvii
与聚合设计一道使用 ..................................................................... 527
增强事件 ......................................................................................... 527
工具和模式 ..................................................................................... 529
事件序列器 ............................................................................. 530
事件不变性 ............................................................................. 531
值对象 ..................................................................................... 531
协议生成 ......................................................................................... 534
单元测试和需求规范 ..................................................................... 535
事件源和函数式语言 ..................................................................... 536
参考文献 ...........................................................................539
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证