第一部分 架构与设计的原则和模式 2
第1章 架构与设计的流程和核心概念 2
1.1正确认识软件架构 2
1.1.1什么是架构 2
1.1.2架构师的职责 3
1.1.3架构设计 6
1.1.4架构设计的优点 8
1.2正确理解设计的含义 11
1.2.1设计的重要性 12
1.2.2架构和设计的关系 12
1.3架构设计中的重要概念 14
1.3.1 Tier和Layer 14
1.3.2架构与框架 15
1.3.3架构与模式 15
1.4本章小结 16
第2章 模式、设计原则和方法 17
2.1设计原则与软件设计 17
2.1.1设计原则简述 17
2.1.2设计原则实战 18
2.2设计模式 23
2.2.1设计模式简介 23
2.2.2正确使用设计模式 25
2.2.3设计模式实战 26
2.3企业应用架构模式 31
2.3.1什么是企业架构 31
2.3.2什么是企业级开发 31
2.3.3再议架构设计和模式 32
2.3.4企业架构模式介绍 33
2.4企业架构模式实战 34
2.5设计方法 38
2.5.1 测111试驱动开发 38
2.5.2领域驱动开发 39
2.5.3行为驱动开发 39
2.6本章小结 39
第二部分 架构与设计的方法和最佳实践 42
第3章 架构分层 42
3.1反模式项目实例 42
3.2分层设计 45
3.2.1正确理解分层 45
3.2.2常见的分层架构设计 46
3.2.3 N-Tier架构 52
3.2.4 N- Tier架构需要考虑的因素 52
3.3从重构到分层 56
3.3.1业务层设计实战 58
3.3.2数据访问层设计实战 62
3.3.3服务层设计实战 63
3.3.4显示层设计实战 66
3.4本章小结 69
第4章 业务层设计 70
4.1业务层组织模式剖析 70
4.1.1 Transaction Script模式与实战 70
4.1.2 Active Record模式与实战 72
4.1.3 Domain Model模式与实战 78
4.1.4 Anemic Domain Model模式与实战 90
4.1.5业务层组织模式比较 91
4.2业务层常用设计模式解析及实战 92
4.2.1工厂方法模式 92
4.2.2装饰者模式 95
4.2.3模板方法模式 102
4.2.4状态模式 104
4.2.5策略模式 109
4.2.6模板方法模式、状态模式、策略模式的比较 109
4.3业务层常用的企业架构模式及实战 113
4.4模式联合实战 115
4.4.1需求规格模式 115
4.4.2组合模式 116
4.5业务层常用的设计原则及实战 123
4.6本章小结 126
第5章 服务层设计 127
5.1服务层详解 127
5.1.1服务层的由来 127
5.1.2服务层的职责是什么 130
5.1.3服务层的必要性 130
5.2服务层常用设计模式解析 131
5.2.1外观模式 131
5.2.2远程外观模式 133
5.2.3数据传输对象模式 135
5.3 SOA介绍 136
5.3.1 SOA用途 136
5.3.2 SOA原则 139
5.3.3服务设计原则 140
5.3.4 服务解惑 142
5.3.5服务操作设计原则 143
5.3.6服务粒度介绍 144
5.4服务层常用消息模式解析 146
5.4.1文档消息模式与请求-响应模式 146
5.4.2预约保留模式 147
5.4.3等幂模式 148
5.5 SOA实战——WCF实现 149
5.5.1系统分析 149
5.5.2业务层实战 151
5.5.3数据层实战 152
5.5.4服务层实战 155
5.5.5代理层实战 160
5.5.6显示层实战 162
5.6本章小结 163
第6章 数据访问层设计 164
6.1数据访问层简述 164
6.2数据访问层的设计策略 165
6.2.1仓储模式 165
6.2.2数据访问对象模式 166
6.3数据访问层常用模式与原则解析 166
6.3.1工作单元 167
6.3.2标识映射 175
6.3.3延迟加载 178
6.3.4数据并发控制 182
6.3.5查询对象 184
6.4 ORM对象关系映射 190
6.4.1 NHibernate介绍 191
6.4.2 Entity Framework介绍 191
6.5企业级领域驱动设计项目实战 192
6.5.1业务层的实现 192
6.5.2服务层的实现 197
6.5.3数据访问层的实现 203
6.5.4显示层的实现 221
6.6本章小结 223
第7章 数据存储层设计 224
7.1合理选择数据存储方案 224
7.1.1数据存储的三种方式 224
7.1.2选择合理的数据存储方案 227
7.2数据库架构设计 228
7.2.1分布数据 229
7.2.2数据拆分 229
7.2.3读写分离 233
7.2.4数据缓存 234
7.3数据库设计 236
7.3.1数据库计划 236
7.3.2逻辑数据库设计 236
7.3.3物理数据库设计 238
7.4 SQL Server数据库性能瓶颈分析与解决方案 240
7.4.1缺失索引的瓶颈分析与解决方案 240
7.4.2昂贵查询的瓶颈分析与解决方案 255
7.4.3数据库碎片的瓶颈分析与解决方案 259
7.5本章小结 261
第8章 显示层设计 262
8.1 MVP模式的原理与实战 262
8.1.1 MVP模式实战(ASP.NET实现) 263
8.1.2 MVP模式经验谈 269
8.1.3 MVP模式之高级话题 276
8.2前端控制器模式的原理与实战 283
8.2.1前端控制器模式介绍 283
8.2.2深入浅出命令模式 284
8.2.3前端控制器模式实战 287
8.3 MVC模式的原理与实战 289
8.3.1深入浅出MVC模式 290
8.3.2 MVC模式之高级话题 297
8.3.3 MVC模式实战——对ASP.NET MVC源码进行分析 298
8.4 PM模式的原理与实战 313
8.4.1 PM模式的解析 313
8.4.2 PM模式实战 316
8.5 MVVM模式的原理与实战 324
8.5.1 MVVM模式介绍 324
8.5.2 MVVM模式深度剖析 325
8.5.3 MVVM模式高级话题 337
8.6本章小结 342
第三部分 NET应用的架构与设计实战 344
第9章 lT创业产品互推平台的项目背景与功能介绍 344
9.1 TT创业产品互推平台背景 344
9.2 SNS功能介绍 344
9.2.1用户管理 345
9.2.2个人信息管理 346
9.2.3软件展示功能 347
9.2.4好友功能 348
9.2.5站内信息功能 349
9.2.6多媒体文件管理 350
9.2.7博客 351
9.2.8用户群 353
9.2.9微博 354
9.2.10共享功能 355
9.2.11论坛 355
9.2.12活动 356
9.2.13投票 358
9.2.14页面布局定制 359
9.2.15 评级 359
9.3本章小结 360
第10章 lT创业产品互推平台架构设计 361
10.1分层设计 361
10.1.1逻辑分层的总体设计 361
10.1.2通用功能设计 362
10.1.3业务层设计 363
10.1.4数据持久层设计 364
10.1.5显示层设计 364
10.2部署设计 365
10.2.1单服务器部署 365
10.2.2多服务器部署 365
10.3文件存储的设计 367
10.4基础类库的设计 369
10.4.1缓存 369
10.4.2配置读取 375
10.4.3邮件发送 376
10.4.4日志记录 378
10.4.5辅助类的实现 382
10.5本章小结 383
第11章 lT创业产品互推平台用户管理 384
11.1用户管理功能分析 384
11.1.1用户注册 384
11.1.2用户登录 384
11.1.3找回密码 386
11.1.4激活账户 386
11.1.5删除用户 386
11.1.6更新用户 387
11.1.7查询用户 387
11.2用户管理接口的定义 390
11.2.1服务层实现定义 390
11.2.2业务模型定义 392
11.2.3数据访问层的接口定义 393
11.3用户管理的实现 393
11.3.1服务层实现 393
11.3.2业务层实现 400
11.3.3数据访问层实现 403
11.3.4显示层实现 404
11.4本章小结 406
附录A 407