第一部分 理解业务领域 3
第1章 实施全面的领域分析 3
1.1领域驱动设计前来解困 3
1.1.1领域驱动设计 3
1.1.2消除DDD的常见误解 4
1.2通用语言 5
1.2.1创建领域特定术语的词汇表 5
1.2.2使业务和代码保持同步 7
1.3限界上下文 8
1.3.1发现限界上下文 8
1.3.2实现限界上下文 9
1.4上下文映射 11
1.5事件风暴 12
1.5.1拥有无尽的建模空间 13
1.5.2找出领域中的事件 13
1.5.3引导讨论 13
1.6小结 13
第2章 选择支撑架构 15
2.1关于业务逻辑的一切 15
2.1.1研究应用程序逻辑 15
2.1.2研究领域逻辑 16
2.1.3探究业务逻辑的模式 17
2.2使用单个模型 19
2.2.1探究面向对象领域模型的元素 19
2.2.2把业务规则放进去 20
2.2.3发现聚合 22
2.2.4探究领域服务的角色 23
2.3实现命令查询分离 25
2.3.1应用命令查询分离原则 26
2.3.2实现CQRS 28
2.4基于消息的方案 30
2.4.1专属基础设施 30
2.4.2介绍事件溯源 33
2.5小结 35
第3章 用户体验驱动设计 36
3.1为什么自上而下方案比自下而上方案更优 36
3.1.1自下而上方案的基础 37
3.1.2规划自上而下方案 39
3.2从架构的角度来看用户体验 40
3.2.1用户体验不是用户界面 40
3.2.2三步解释用户体验驱动设计 42
3.3为什么用户体验驱动设计几乎有利于每个人 46
3.4小结 47
第4章Web解决方案的架构选项 49
4.1评估可用的Web解决方案 49
4.1.1决定最佳框架 49
4.1.2规划解决方案 50
4.2研究ASP.NET Core 1.0的角色 51
4.2.1把ASP.NET看作起点 51
4.2.2研究ASP.NET Core 1.0里的架构依赖 52
4.2.3探究选择ASP.NET Core 1.0的原因 53
4.3决定是否应该使用ASP.NET WebForms 55
4.3.1研究一个常见的场景 55
4.3.2 ASP.NET Web Forms初探 55
4.3.3 Web Forms仍有好的一面 56
4.3.4为什么应该远离Web Forms 56
4.4决定是否应该使用ASP.NET MVC 57
4.4.1 ASP.NET MVC初探 58
4.4.2 ASP.NET MVC的优点 58
4.4.3 ASP.NET MVC的弱点 59
4.5研究ASP.NET Web API的角色 59
4.5.1 WCF转到Web API 60
4.5.2比较ASP.NET Web API和ASP.NET MVC 60
4.5.3聊聊REST 62
4.5.4在ASP.NET Core 1.0里使用Web API 62
4.6单页应用程序 63
4.6.1构建SPA 64
4.6.2混合SPA 64
4.6.3 SPA的弱点 64
4.7小结 65
第5章 分层架构 66
5.1超越经典的三层系统 66
5.1.1目前使用的三层架构 67
5.1.2灰色地带 67
5.2表现层 68
5.2.1用户体验 68
5.2.2输入模型 69
5.2.3视图模型 69
5.3应用程序层 70
5.3.1系统后端的入口 70
5.3.2业务流程的编排 71
5.4领域层 71
5.4.1神秘的领域模型 72
5.4.2同样神秘的领域服务概念 72
5.4.3更务实的领域建模观点 73
5.5基础设施层 73
5.5.1当前状态存储 73
5.5.2事件存储 74
5.5.3缓存层 75
5.5.4外部服务 75
5.6小结 75
第二部分 实现常见功能 79
第6章ASP.NET的现状 79
6.1 Web的风格 79
6.1.1 Web原本可以不同 79
6.1.2经典Web是赢家 80
6.2 ASP.NET是功能完整的 80
6.2.1不必添加更多功能 81
6.2.2它的潜能得到充分挖掘,还是说这个软件已遭废弃 81
6.3 ASP.NET Core 1.0没有新的功能 81
6.3.1这是关于新的运行时 82
6.3.2这是关于业务模型 82
6.3.3这是关于开发模型 82
6.4 ASP.NET的现状是什么 82
第7章 ASP.NET Core 1.0的来龙去脉及技术细节 84
7.1 ASP.NET Core的背景 84
7.1.1大内存占用的代价 85
7.1.2把云重新看作杀手锏 85
7.1.3不同的编程模型的必要性 85
7.1.4日常工作的影响 86
7.2 ASP.NET Core运行时概览 86
7.2.1 DNX托管环境 87
7.2.2在DNX中托管Web应用程序 88
7.2.3 ASP.NET Core HTTP通道 89
7.3 ASP.NET开发者的ASP.NET Core使用指南 90
7.3.1创建一个新的项目 91
7.3.2应用程序启动 94
7.3.3应用程序设置 96
7.3.4验证 98
7.3.5 Web编程的其他方面 99
7.4小结 101
第8章 ASP.NET MVC的精髓 103
8.1路由传入请求 103
8.1.1模拟ASP.NET MVC运行时 104
8.1.2探索URL路由HTTP模块 106
8.1.3使用应用程序路由 107
8.2探索控制器类 113
8.2.1了解控制器的各个方面 113
8.2.2编写控制器类 115
8.3处理输入数据 119
8.3.1手动参数绑定 119
8.3.2模型绑定 120
8.4产生操作结果 124
8.4.1包装结果 124
8.4.2返回HTML标记内容 126
8.4.3返回JSON内容 132
8.5小结 133
第9章 Bootstrap的精髓 135
9.1 Bootstrap概览 135
9.1.1 LESS和Bootstrap基础 135
9.1.2设置Bootstrap 138
9.1.3透析Bootstrap 138
9.2反应式布局 139
9.2.1网格系统 139
9.2.2基于屏幕大小的渲染 141
9.3现今Web元素的分类体系 145
9.3.1重塑基本HTML元素的样式 145
9.3.2重塑列表HTML元素的样式 153
9.3.3了解更高级的组件 155
9.4 Bootstrap扩展 161
9.4.1自动完成 161
9.4.2日期选择 166
9.4.3自定义组件 168
9.5小结 172
第10章 ASP.NET MVC项目的组织方式 173
10.1规划项目解决方案 173
10.1.1把项目映射到分层架构模式 173
10.1.2应用程序启动 175
10.1.3研究应用程序服务 179
10.1.4加入其他资产 181
10.1.5创建表现布局 182
10.2更有效地提供资源 184
10.2.1打包 185
10.2.2使用简化 189
10.3研究其他方面 190
10.3.1研究错误处理 190
10.3.2配置用户验证 193
10.4小结 197
第11章 展示数据 198
11.1组织HTML视图 198
11.1.1探索视图模型 198
11.1.2研究页面布局 201
11.1.3展示视图元素 204
11.2显示一组数据项 207
11.2.1创建网格视图 208
11.2.2添加页面功能 212
11.2.3向页面元素添加滚动功能 216
11.3添加详细视图 219
11.3.1弹框视图 220
11.3.2向下追溯视图 222
11.4小结 224
第12章 编辑数据 225
12.1用于登录页面的通用表单 225
12.1.1展示表单 225
12.1.2处理提交数据 227
12.2输入表单 229
12.2.1 Post-Redirect-Get模式 229
12.2.2表单验证 231
12.2.3模态输入表单 239
12.3改善用户体验的小窍门 247
12.3.1使用日期选择器是挺好的,但 247
12.3.2使用自动完成而不是冗长的下拉列表 249
12.3.3大型输入表单的其他建议 251
12.4小结 252
第13章 持久化和建模 253
13.1研究不同类型的模型 253
13.1.1持久化模型 253
13.1.2领域模型 254
13.1.3输入模型 256
13.1.4视图模型 256
13.2设计持久层 257
13.2.1使用隐式的遗留数据模型 258
13.2.2使用Entity Framework 259
13.2.3仓库模式 262
13.3多样化持久化 264
13.3.1多样化持久化的例子 264
13.3.2多样化持久化的代价 265
13.4小结 267
第三部分 分析用户体验 271
第14章 创建更具交互性的视图 271
14.1暴露JSON内容 271
14.1.1创建JSON端点 272
14.1.2协商内容 274
14.1.3解决跨源问题 275
14.2设计Web API 279
14.2.1 ASP.NET Web API的目的 279
14.2.2在ASP.NET MVC环境中的Web API 279
14.2.3保护独立的Web API 280
14.3拉取内容 282
14.3.1 Ajax核心 282
14.3.2 jQuery工具 285
14.3.3把数据绑到当前DOM 287
14.4把内容推到客户端 290
14.4.1 ASP.NET SignalR初探 290
14.4.2监视远程任务 291
14.4.3 ASP.NET SignalR的其他场景 294
14.5小结 296
第15章 反应式设计的优缺点 297
15.1反应式Web设计的基础 297
15.1.1 RWD简史 297
15.1.2 CSS媒体查询 298
15.1.3 RWD和设备独立性 302
15.2使RWD适配非桌面设备 303
15.2.1处理图像 304
15.2.2处理字体 306
15.2.3处理朝向 307
15.3小结 308
第16章 让网站对移动友好 309
16.1让视图适配实际设备 309
16.1.1最适合移动场景的HTML5 309
16.1.2特性检测 312
16.1.3客户端设备检测 313
16.1.4展望未来 316
16.2设备友好的图像 316
16.2.1 ImageEngine平台 316
16.2.2自动调整图像大小 317
16.3提供设备友好的视图 318
16.3.1提供移动内容的最佳方式是什么 318
16.3.2服务器端检测 319
16.4小结 324