首页

《实现领域驱动设计》PDF英文版本下载

标签:领域驱动设计,值对象,REST资源,NotificationLog     发布时间:2016-12-09   
  • 云盘下载:
  • [提取码:0000]
  • 本地下载:
       ( 需积分:2  )

一、目录介绍

实现领域驱动设计_英文版副本.jpg

前言
第1章 DDD入门
我能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


��

  • ◆ 相关内容