`
yangzhiyong77
  • 浏览: 958387 次
文章分类
社区版块
存档分类
最新评论

领域驱动设计与模式实战(Martin Fowler和Eric Evans两位大师联袂推荐)

 
阅读更多

领域驱动设计与模式实战(Martin Fowler和Eric Evans两位大师联袂推荐)



【作  者】(瑞)Jimmy Nilsson [同作者作品] [作译者介绍]
【译  者】 赵俐;马燕新[同译者作品]
【丛 书 名】 图灵程序设计丛书
【出 版 社】 人民邮电出版社 【书 号】 9787115212771
【上架时间】 2009-10-10
【出版日期】 2009 年10月 【开 本】 16开

样章免费试读:http://www.china-pub.com/192983

编辑推荐

Martin Fowler和Eric Evans两位大师联袂推荐.
.NET开发人员必读之作..
《企业应用架构模式》与《领域驱动设计》两大名著精髓的实战演练
教你穿越业务层、数据层和UI层之间重重障碍,打通任督二脉...

【内容简介】
模式、领域驱动设计和测试驱动开发赋予架构师和开发人员前所未有的能力,使他们能够创建功能强大、健壮且可维护的系统。但是,如何在实际项目中充分发挥这些利器的潜力呢?.
本书中,作者将Martin Fowler《企业应用架构模式》和Eric Evans《领域驱动设计》两部经典名著中的思想精髓以及重构、测试驱动开发等技术融会贯通,并通过大量C#实例加以阐释,跨越了领域模型、数据库与UI 层之间的障碍,真实展示了创建高质量的企业级应用架构的全部过程。..
本书就像是精彩纷呈的旅行见闻,每一处的所思所想都闪耀着智慧的光芒,生动诠释了作者对面向对象开发中各种设计选择的深刻理解。...

【目录】

第一部分 背景知识
第1章 应重视的价值,也是对过去几年
的沉重反思2
1.1 总体价值2
1.2 应重视的架构风格3
1.2.1 焦点之一:模型3
1.2.2 焦点之二:用例3
1.2.3 如果重视模型,就可以使用领域模型模式6
1.2.4 慎重处理数据库9
1.2.5 领域模型与关系数据库之间的阻抗失配13
1.2.6 谨慎处理分布式16
1.2.7 消息传递很重要18
1.3 对过程的各个组成部分的评价19
1.3.1 预先架构设计20
1.3.2 领域驱动设计21
1.3.3 测试驱动开发22
1.3.4 重构25
1.3.5 选择一种还是选择组合26
1.4  持续集成27
1.4.1 解决方案(或至少是正确方向上的一大步)27
1.4.2 从我的组织汲取的教训28
1.4.3 更多信息28
1.5 不要忘记运行机制28
1.5.1 有关何时需要运行机制的一个例子29
1.5.2 运行机制的一些例子29
1.5.3 它不仅仅是我们的过错30
1.6 小结30
第2章 模式起步32
2.1 模式概述32
2.1.1 为什么要学习模式33
2.1.2 在模式方面要注意哪些事情34
2.2 设计模式35
2.3 架构模式42
2.3.1 示例:层42
2.3.2 另一个示例:领域模型模式43
2.4 针对具体应用程序类型的设计模式43
2.5 领域模式48
2.6 小结52
第3章 TDD与重构53
3.1 TDD53
3.1.1 TDD流程53
3.1.2 演示54
3.1.3 设计效果59
3.1.4 问题61
3.1.5 下一个阶段62
3.2 模拟和桩62
3.2.1 典型单元测试62
3.2.2 声明独立性63
3.2.3 处理困难因素64
3.2.4 用测试桩替换协作对象64
3.2.5 用模拟对象替换协作对象66
3.2.6 设计含义68
3.2.7 结论68
3.2.8 更多信息68
3.3 重构68
3.4 小结78
第二部分 应用DDD
第4章 新的默认架构80
4.1 新的默认架构的基础知识80
4.1.1 从以数据库为中心过渡到以领域模型为中心81
4.1.2 进一步关注DDD81
4.1.3 根据DDD进行分层82
4.2 轮廓83
4.2.1 领域模型示例的问题/特性83
4.2.2 逐个处理特性84
4.2.3 到目前为止的领域模型94
4.3 初次尝试将UI与领域模型挂接95
4.3.1 基本目标95
4.3.2 简单UI的当前焦点95
4.3.3 为客户列出订单95
4.3.4 添加订单97
4.3.5 刚才我们看到了什么98
4.4 另一个维度98
4.4.1 领域模型的位置99
4.4.2 孤立或共享的实例99
4.4.3 有状态或无状态领域模型实例化100
4.4.4 领域模型的完整实例化或子集实例化100
4.5 小结101
第5章 领域驱动设计进阶102
5.1 通过简单的TDD实验来精化领域模型102
5.1.1 从Order和OrderFactory的创建开始103
5.1.2 一些领域逻辑106
5.1.3 第二个任务:OrderRepo-
sitory + OrderNumber107
5.1.4 重建持久化的实体:如何从外部设置值111
5.1.5 获取订单列表114
5.1.6 该到讨论实体的时候了115
5.1.7 再次回到流程上来116
5.1.8 总览图117
5.1.9 建立OrderRepository的伪实现118
5.1.10 简单讨论一下保存120
5.1.11 每个订单的总量120
5.1.12 历史客户信息124
5.1.13 实例的生命周期126
5.1.14 订单类型128
5.1.15 订单的介绍人128
5.2 连贯接口130
5.3 小结131
第6章 准备基础架构132
6.1 将POCO作为工作方式133
6.1.1 实体和值对象的PI133
6.1.2 是否使用PI137
6.1.3 运行时与编译时PI137
6.1.4 PI实体/值对象的代价137
6.1.5 将PI用于存储库139
6.1.6 单组存储库的代价143
6.2 对保存场景的处理143
6.3 建立伪版本机制147
6.3.1 伪版本机制的更多特性148
6.3.2 伪版本的实现149
6.3.3 影响单元测试150
6.4  数据库测试153
6.4.1 在每次测试之前重置数据库154
6.4.2 在测试运行期间保持数据库的状态155
6.4.3 测试之前重置测试所使用的数据156
6.4.4 不要忘记不断演变的模式156
6.4.5 分离单元测试和数据库调用测试156
6.5 查询159
6.5.1 单组查询对象160
6.5.2 单组查询对象的代价161
6.5.3 将查询定位到哪里162
6.5.4 再次将聚合作为工具163
6.5.5 将规格用于查询164
6.5.6 其他查询选择165
6.6 小结165
第7章 应用规则166
7.1 规则的分类166
7.2 规则的原则及用法167
7.2.1 双向规则检查:可选的(可能的)主动检查,必需的(和自动的)被动检查167
7.2.2 所有状态(即使是错误状态)都应该是可保存的167
7.2.3 规则应该高效使用167
7.2.4 规则应该是可配置的,以便添加自定义规则167
7.2.5 规则应与状态放在一起167
7.2.6 规则应该具有很高的可测试性168
7.2.7 系统应阻止我们进入错的状态168
7.3 开始创建API168
7.3.1 上下文,上下文,还是上下文169
7.3.2 数据库约束169
7.3.3 将规则绑定到与领域有关的转换,还是绑定到与基础架构有关的转换170
7.3.4 精化原则:所有状态,即使是错误状态,都应该是可保存的171
7.4 与持久化有关的基本的规则API的需求172
7.4.1 回到已发现的API问题上173
7.4.2 问题是什么173
7.4.3 我们允许了不正确的转换174
7.4.4 如果忘记检查怎么办174
7.5 关注与领域有关的规则174
7.5.1 需要合作的规则176
7.5.2 使用基于集合的处理方法177
7.5.3 基于服务的验证178
7.5.4 在不应该转换时尝试转换179
7.5.5 业务ID180
7.5.6 避免问题182
7.5.7 再次将聚合作为工具183
7.6 扩展API183
7.6.1 查询用于设置UI的规则184
7.6.2 使注入规则成为可能184
7.7 对实现进行精化184
7.7.1 一个初步实现184
7.7.2 创建规则类,离开最不成熟的阶段189
7.7.3 设置规则列表191
7.7.4 使用规则列表192
7.7.5 处理子列表192
7.7.6 一个API改进193
7.7.7 自定义194
7.7.8 为使用者提供元数据195
7.7.9 是否适合用模式来解决此问题195
7.7.10 复杂规则又是什么情况195
7.8 绑定到持久化抽象196
7.8.1 使验证接口成为可插入的196
7.8.2 在保存方面实现被动验证的替代解决方案197
7.8.3 重用映射元数据198
7.9 使用泛型和匿名方法198
7.10 其他人都做了什么199
7.11 小结200
第三部分 应用PoEAA
第8章 用于持久化的基础架构202
8.1 持久化基础架构的需求203
8.2 将数据存储到哪里204
8.2.1 RAM204
8.2.2 文件系统205
8.2.3 对象数据库206
8.2.4 关系数据库207
8.2.5 使用一个还是多个资源管理器207
8.2.6 其他因素207
8.2.7 选择和前进207
8.3 方法208
8.3.1 自定义手工编码208
8.3.2 自定义代码的代码生成209
8.3.3 元数据映射(对象关系(O/R)映射工具)210
8.3.4 再次选择211
8.4 分类211
8.4.1 领域模型风格211
8.4.2 映射工具风格212
8.4.3 起点212
8.4.4 API焦点213
8.4.5 查询风格213
8.4.6 高级数据库支持214
8.4.7 其他功能215
8.5 另一个分类:基础架构模式216
8.5.1 元数据映射:元数据的类型216
8.5.2 标识字段217
8.5.3 外键映射219
8.5.4 嵌入值219
8.5.5 继承解决方案219
8.5.6 标识映射220
8.5.7 操作单元220
8.5.8 延迟加载/立即加载220
8.5.9 并发控制221
8.6 小结222
第9章 应用NHibernate223
9.1 为什么使用NHibernate223
9.2 NHibernate简介224
9.2.1 准备224
9.2.2 一些映射元数据225
9.2.3 一个小的API示例229
9.2.4 事务231
9.3 持久化基础架构的需求232
9.3.1 高级持久化透明232
9.3.2 持久化实体的生命周期所需的特定特性233
9.3.3 谨慎处理关系数据库234
9.4 分类235
9.4.1 领域模型风格235
9.4.2 映射工具风格235
9.4.3 起点236
9.4.4 API焦点236
9.4.5 查询语言风格236
9.4.6 高级数据库支持237
9.4.7 其他功能239
9.5 另一种分类:基础架构模式240
9.5.1 元数据映射:元数据类型240
9.5.2 标识字段240
9.5.3 外键映射241
9.5.4 嵌入值241
9.5.5 继承解决方案242
9.5.6 标识映射243
9.5.7 操作单元244
9.5.8 延迟加载/立即加载244
9.5.9 并发性控制244
9.5.10 额外功能:验证挂钩245
9.6 NHibernate和DDD245
9.6.1 程序集概览245
9.6.2 ISession和存储库246
9.6.3 ISession、存储库和事务246
9.6.4 得到了什么结果247
9.7 小结247
第四部分 下一步骤
第10章 博采其他设计技术250
10.1 上下文为王250
10.1.1 层和分区250
10.1.2 分区的原因251
10.1.3 限界上下文252
10.1.4 限界上下文与分区有何关联252
10.1.5 向上扩展DDD项目252
10.1.6 为什么对领域模型——SO
分区253
10.2 SOA简介253
10.2.1 什么是SOA253
10.2.2 为什么需要SOA253
10.2.3 SOA有什么不同254
10.2.4 什么是服务254
10.2.5 服务中包括什么254
10.2.6 深入分析4条原则255
10.2.7 再来看一下什么是服务256
10.2.8 OO在SOA中的定位256
10.2.9 客户—服务器和SOA257
10.2.10 单向异步消息传递257
10.2.11 SOA如何提高可伸缩性258
10.2.12 SOA服务的设计258
10.2.13 服务之间如何交互259
10.2.14 SOA和不可用的服务261
10.2.15 复杂的消息传递处理262
10.2.16 服务的可伸缩性262
10.2.17 小结263
10.3 控制反转和依赖注入263
10.3.1 任何对象都不是孤岛263
10.3.2 工厂、注册类和服务定位器265
10.3.3 构造方法依赖注入267
10.3.4 setter依赖注入269
10.3.5 控制反转270
10.3.6 使用了Spring.NET框架的依赖注入271
10.3.7 利用PicoContainer.NET进行自动装配272
10.3.8 嵌套容器273
10.3.9 服务定位器与依赖注入的比较275
10.3.10 小结275
10.4 面向方面编程276
10.4.1 热门话题有哪些277
10.4.2 AOP术语定义279
10.4.3 .NET中的AOP280
10.4.4 小结291
10.5 小结291
第11章 关注UI292
11.1 提前结语292
11.2 模型—视图—控制器模式293
11.2.1 示例:Joe的Shoe Shop程序294
11.2.2 通过适配器简化视图界面299
11.2.3 将控制器从视图解耦299
11.2.4 将视图和控制器结合起来300
11.2.5 是否值得使用MVC300
11.3 测试驱动的Web窗体300
11.3.1 背景301
11.3.2 一个示例301
11.3.3 领域模型302
11.3.4 GUI的TDD302
11.3.5 Web窗体实现307
11.3.6 小结309
11.3.7 用NMock创建模拟309
11.4 映射和包装311
11.4.1 映射和包装311
11.4.2 用表示模型来包装领域模型312
11.4.3 将表示模型映射到领域模型313
11.4.4 管理关系316
11.4.5 状态问题318
11.4.6 最后的想法319
11.5 小结320
11.6 结束语320
第五部分 附  录
附录A 其他领域模型风格324
附录B 已讨论的模式的目录349

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics