Microsoft.NET企业级应用架构设计(第2版)

978-7-115-41371-0
作者: 【意】Dino Esposito(埃斯波西托)Andrea Saltarello(索尔塔雷罗)
译者: 李永伦
编辑: 陈冀康胡俊英

图书目录:

目 录

第 1 部分 基础

第 1 章 今 天的架构师和架构...............................................................................................................2

1.1 软件架构到底是什么........................................................................................................................2

1.1.1 把架构原则应用到软件中..................................................................................................3

1.1.2 确认需求.................................................................................................................................5

1.1.3 什么是架构,什么不是......................................................................................................8

1.1.4 架构流程...............................................................................................................................10

1.2 谁是架构师.......................................................................................................................................12

1.2.1 架构师的职责......................................................................................................................12

1.2.2 架构师的角色......................................................................................................................14

1.2.3 关于架构师的常见误解....................................................................................................15

1.3 总结....................................................................................................................................................17

1.4 笑到**后............................................................................................................................................17

第 2 章 为成功而设计.............................................................................................................................18

2.1 “大泥球”..........................................................................................................................................18

2.1.1 “大泥球”的成因.............................................................................................................19

2.1.2 “大泥球”的征兆................................................................................................................21

2.1.3 使用指标检测BBM...........................................................................................................23

2.2 软件项目的机制..............................................................................................................................24

2.2.1 组织文化...............................................................................................................................24

2.2.2 帮助团队更好地写代码....................................................................................................26

2.3 走出混乱............................................................................................................................................29

2.3.1 有一种奇怪的东西叫作“遗留代码” ............................................................................30

2.3.2 在3 招之内将杀(checkmate)......................................................................................30

2.3.3 决定是否添加人手.............................................................................................................33

2.4 总结....................................................................................................................................................34

2.5 笑到**后............................................................................................................................................35

第3 章 软件设计的原则.......................................................................................................................36

3.1 软件设计的通用原则......................................................................................................................36

3.1.1 从意大利面代码到千层饼代码.......................................................................................37

3.1.2 关注点分离..........................................................................................................................38

3.1.3 隔离.......................................................................................................................................39

3.2 面向对象设计...................................................................................................................................39

3.2.1 相关类...................................................................................................................................40

3.2.2 对接口编程..........................................................................................................................40

3.2.3 组合与继承..........................................................................................................................42

3.2.4 反思面向对象......................................................................................................................43

3.3 开发和设计向量..............................................................................................................................44

3.3.1 SOLID 原则.........................................................................................................................44

3.3.2 处理依赖的模式.................................................................................................................48

3.3.3 编码向量...............................................................................................................................50

3.3.4 使用模式...............................................................................................................................52

3.4 防御性编程.......................................................................................................................................54

3.4.1 “如果—那么—抛出”模式............................................................................................55

3.4.2 软件契约...............................................................................................................................55

3.5 总结....................................................................................................................................................59

3.6 笑到**后............................................................................................................................................59

第 4 章 编写优质软件.............................................................................................................................60

4.1 编写可测试代码的艺术.................................................................................................................60

4.1.1 什么是可测试性.................................................................................................................61

4.1.2 测试你的软件......................................................................................................................62

4.1.3 软件测试的常见实践.........................................................................................................69

4.2 代码可扩展性的实践......................................................................................................................73

4.2.1 基于接口的设计.................................................................................................................74

4.2.2 插件架构...............................................................................................................................74

4.2.3 状态机...................................................................................................................................74

4.3 写出别人看得懂的代码.................................................................................................................74

4.3.1 把可读性看作软件特性....................................................................................................75

4.3.2 一些改善可读性的实用规则............................................................................................77

4.4 总结....................................................................................................................................................79

4.5 笑到**后............................................................................................................................................79

第 2 部分 设计架构

第5 章 发现领域架构.............................................................................................................................82

5.1 领域驱动设计的真正附加价值....................................................................................................82

5.1.1 DDD 里有什么为我所用..................................................................................................83

5.1.2 使用DDD 开展分析..........................................................................................................83

5.1.3 策略模型设计......................................................................................................................84

5.2 统一语言............................................................................................................................................85

5.2.1 统一语言的目的.................................................................................................................85

5.2.2 统一语言的结构.................................................................................................................86

5.2.3 如何定义统一语言.............................................................................................................86

5.2.4 保持语言与模型同步.........................................................................................................87

5.3 绑定上下文.......................................................................................................................................88

5.3.1 发现上下文..........................................................................................................................88

5.3.2 把领域分割成绑定上下文................................................................................................89

5.3.3 上下文映射..........................................................................................................................91

5.3.4 给予每个上下文它自己的架构.......................................................................................92

5.4 分层架构............................................................................................................................................94

5.4.1 分层架构的起源.................................................................................................................94

5.4.2 表现层...................................................................................................................................96

5.4.3 应用程序层..........................................................................................................................96

5.4.4 领域层...................................................................................................................................98

5.4.5 基础设施层..........................................................................................................................98

5.5 总结....................................................................................................................................................98

5.6 笑到**后............................................................................................................................................99

第 6 章 表现层.......................................................................................................................................... 100

6.1 用户体验优先................................................................................................................................ 100

6.1.1 关注交互............................................................................................................................ 101

6.1.2 用户体验不是用户界面................................................................................................. 102

6.1.3 如何创建有效的体验...................................................................................................... 104

6.2 真实场景......................................................................................................................................... 107

6.2.1 ASP.NET 网站.................................................................................................................. 107

6.2.2 Web Forms 与ASP.NET MVC.......................................................................................111

6.2.3 给网站添加设备支持...................................................................................................... 113

6.2.4 单页应用程序................................................................................................................... 117

6.2.5 桌面富客户端................................................................................................................... 120

6.3 总结................................................................................................................................................. 122

6.4 笑到**后......................................................................................................................................... 122

第 7 章 神秘的业务层.......................................................................................................................... 123

7.1 用来组织业务逻辑的模式.......................................................................................................... 123

7.1.1 CRUD 童话与架构白马王子........................................................................................ 124

7.1.2 事务脚本模式................................................................................................................... 124

7.1.3 领域模型模式................................................................................................................... 127

7.1.4 贫血领域模型(反)模式............................................................................................. 128

7.2 把焦点从数据移到任务.............................................................................................................. 129

7.2.1 ASP.NET MVC 里的任务编排...................................................................................... 130

7.2.2 在领域里编排任务.......................................................................................................... 133

7.3 跨越边界传输数据....................................................................................................................... 134

7.3.1 分层架构里的数据流...................................................................................................... 134

7.3.2 共享领域模型实体.......................................................................................................... 135

7.3.3 使用数据传输对象.......................................................................................................... 136

7.4 总结................................................................................................................................................. 138

7.5 笑到**后......................................................................................................................................... 138

第 3 部分 支撑架构

第8 章 领域模型导论.......................................................................................................................... 140

8.1 从数据到行为的转变................................................................................................................... 140

8.1.1 模型和领域背后的基本原理......................................................................................... 140

8.1.2 数据库是基础设施.......................................................................................................... 142

8.2 领域层的内部................................................................................................................................ 143

8.2.1 领域模型............................................................................................................................ 143

8.2.2 聚合.................................................................................................................................... 145

8.2.3 领域服务............................................................................................................................ 150

8.2.4 领域事件............................................................................................................................ 152

8.2.5 横切关注点....................................................................................................................... 155

8.3 总结................................................................................................................................................. 157

8.4 笑到**后......................................................................................................................................... 157

第 9 章 实现领域模型.......................................................................................................................... 158

9.1 在线商店示例项目....................................................................................................................... 158

9.1.1 入选的用例....................................................................................................................... 158

9.1.2 入选的方案....................................................................................................................... 159

9.1.3 “买买买”项目的结构................................................................................................... 160

9.1.4 入选的技术....................................................................................................................... 161

9.1.5 在线商店的绑定上下文................................................................................................. 162

9.1.6 “买买买”应用程序的上下文映射.............................................................................. 163

9.2 领域建模实用指南....................................................................................................................... 164

9.2.1 行为是游戏规则的变革者............................................................................................. 164

9.2.2 实体的基架....................................................................................................................... 166

9.2.3 值对象的基架................................................................................................................... 169

9.2.4 标识聚合............................................................................................................................ 172

9.2.5 持久化模型....................................................................................................................... 179

9.3 实现业务逻辑................................................................................................................................ 182

9.3.1 查找订单............................................................................................................................ 183

9.3.2 下订单................................................................................................................................ 183

9.3.3 忠诚卡(或客户忠诚计划)......................................................................................... 187

9.4 总结................................................................................................................................................. 187

9.5 笑到**后......................................................................................................................................... 187

第 10 章 CQRS 导论............................................................................................................................ 188

10.1 分离命令与查询......................................................................................................................... 188

10.1.1 CQRS 模式概论............................................................................................................. 189

10.1.2 CQRS 的好处................................................................................................................. 190

10.1.3 在业务层里使用CQRS................................................................................................ 191

10.1.4 CQRS 总能胜任架构需要........................................................................................... 193

10.2 查询栈........................................................................................................................................... 194

10.2.1 读取领域模型................................................................................................................. 194

10.2.2 设计只读模型外观........................................................................................................ 196

10.2.3 分层表达式树................................................................................................................. 198

10.3 命令栈........................................................................................................................................... 202

10.3.1 回到表现层..................................................................................................................... 203

10.3.2 规范化命令和事件........................................................................................................ 205

10.3.3 处理命令和事件............................................................................................................ 207

10.3.4 现成的存储..................................................................................................................... 212

10.4 总结............................................................................................................................................... 214

10.5 笑到**后...................................................................................................................................... 214

第 11 章 实现CQRS............................................................................................................................ 215

11.1 CQRS 的实现.............................................................................................................................. 215

11.1.1 普通简单的CQRS......................................................................................................... 215

11.1.2 具有命令架构的CQRS................................................................................................ 217

11.2 实现查询栈.................................................................................................................................. 219

11.2.1 创建读取外观................................................................................................................. 219

11.2.2 为调用方打包数据........................................................................................................ 220

11.3 实现命令栈.................................................................................................................................. 224

11.3.1 奠定基础.......................................................................................................................... 224

11.3.2 通过命令编排用例........................................................................................................ 227

11.4 总结............................................................................................................................................... 230

11.5 笑到**后...................................................................................................................................... 230

第 12 章 事件溯源导论....................................................................................................................... 231

12.1 事件的突破.................................................................................................................................. 231

12.1.1 下一件大事(重装上阵)........................................................................................... 231

12.1.2 现实世界不仅有模型,还有事件.............................................................................. 232

12.1.3 抛弃“**近已知的正常状态” .................................................................................... 232

12.1.4 事件对软件架构的深刻影响...................................................................................... 234

12.2 事件源架构.................................................................................................................................. 236

12.2.1 持久化事件..................................................................................................................... 236

12.2.2 回放事件......................................................................................................................... 238

12.3 总结............................................................................................................................................... 240

12.4 笑到**后...................................................................................................................................... 240

第 13 章 实现事件溯源....................................................................................................................... 241

13.1 事件溯源:为何以及何时........................................................................................................ 241

13.1.1 为什么说事件溯源是一个资源.................................................................................. 242

13.1.2 事件溯源何时合适........................................................................................................ 243

13.2 带有回放的事件溯源................................................................................................................ 244

13.2.1 现场比分系统................................................................................................................. 244

13.2.2 系统的实现..................................................................................................................... 246

13.3 带有聚合快照的事件溯源........................................................................................................ 255

13.3.1 迷你企业资源规划系统............................................................................................... 256

13.3.2 系统的实现..................................................................................................................... 257

13.4 总结............................................................................................................................................... 2617

13.5 笑到**后...................................................................................................................................... 261

第 4 部分 基础设施

第 14 章 持久层....................................................................................................................................... 264

14.1 持久层概览.................................................................................................................................. 264

14.1.1 持久层的职责................................................................................................................. 264

14.1.2 仓储模式的设计............................................................................................................ 265

14.2 实现仓储...................................................................................................................................... 268

14.2.1 仓储的查询部分............................................................................................................ 268

14.2.2 持久化聚合..................................................................................................................... 271

14.2.3 存储技术......................................................................................................................... 272

14.3 为何你该考虑非关系型存储................................................................................................... 275

14.3.1 熟悉NoSQL ................................................................................................................... 276

14.3.2 你会得到什么,又会失去什么.................................................................................. 277

14.3.3 做出一个正确的选择................................................................................................... 280

14.4 总结............................................................................................................................................... 282

14.5 笑到**后...................................................................................................................................... 282

详情

本书主要介绍了.net平台下企业级架构设计开发的指导原则、最佳实践和模式等。书中第一部分介绍了软件设计基本原则以及架构的相关概念;第二部分按照业务逻辑层、数据访问层、表现层和服务层进行了说明,并详细分析了各层中的常见模式。作者曾撰写多部.net相关的畅销著作,虽然本书涉及架构这个高端主题,但其文字生动活泼,行文一气呵成。本书适合中高级.net开发人员、软件架构师以及有志于成为软件架构师的读者阅读。

图书摘要

相关图书

DirectX 12 3D 游戏开发实战
DirectX 12 3D 游戏开发实战
Python和NLTK自然语言处理
Python和NLTK自然语言处理
scikit-learn机器学习(第2版)
scikit-learn机器学习(第2版)
C++编程自学宝典
C++编程自学宝典
数据科学实战手册(第2版)
数据科学实战手册(第2版)
Scala实用指南
Scala实用指南

相关文章

相关课程