第1章 ASP.NET和jQuery 1
1.1 了解Web Forms 2
1.1.1 视图状态 2
1.1.2 web.config转换 4
1.1.3 简化web.config 4
1.1.4 新的ASP.NET Web Forms模板 4
1.2 ASP.NET MVC 7
1.2.1 MVC的版本 7
1.2.2 MVC的组成部分 8
1.2.3 MVC工具 13
1.2.4 示例应用程序 18
1.2.5 ASP.NET MVC框架小结 26
1.3 jQuery 26
1.3.1 使用jQuery操纵DOM元素 28
1.3.2 使用jQuery调用服务器端代码 29
1.3.3 jQuery 30
1.4 小结 30
1.5 作者简介 31
第2章 ASP.NET性能 33
2.1 了解ASP.NET如何处理页面请求 33
2.2 状态管理和缓存 35
2.2.1 了解.NET中的状态 36
2.2.2 使用会话 37
2.2.3 使用输出缓存 41
2.2.4 部分页面缓存 46
2.2.5 查看.NET 4中新的对象缓存选项 47
2.3 缓存Web服务 49
2.4 硬件注意事项 50
2.5 使用性能计数器 51
2.6 提示和技巧 53
2.6.1 将请求减少到最小值 54
2.6.2 使用内容传递网络 54
2.6.3 使浏览器可以长时间缓存项 55
2.6.4 启用内容压缩 57
2.6.5 页面中内容的位置 58
2.6.6 将JavaScript和CSS外部化 58
2.7 小结 59
2.8 作者简介 59
第3章 ASP.NET的道德黑客攻击 61
3.1 道德黑客攻击——这是矛盾修饰法吗 62
3.2 填充工具箱 63
3.2.1 Fiddler 63
3.2.2 Firebug 65
3.2.3 Internet Explorer 9开发人员工具栏 66
3.2.4 Lens 66
3.3 了解会话管理 67
3.3.1 HTTP中的会话管理 67
3.3.2 ASP.NET中的会话管理 68
3.4 攻击ASP.NET身份验证 69
3.4.1 深入研究ASP.NET身份验证 69
3.4.2 窃取票证 70
3.4.3 篡改票证 71
3.4.4 劫持登录会话 72
3.4.5 跨站请求伪造 77
3.5 攻击ASP.NET会话 80
3.5.1 幕后的ASP.NET会话 80
3.5.2 猜测会话ID 80
3.5.3 窃取会话cookie 81
3.5.4 会话固定 85
3.6 黑客攻击视图状态 87
3.6.1 窥视视图状态 87
3.6.2 篡改视图状态 90
3.6.3 转载视图状态 90
3.7 欺骗事件处理程序 91
3.7.1 事件验证内部 92
3.7.2 黑客攻击事件验证 92
3.7.3 保护网站免受POST攻击 94
3.8 小结 95
3.9 作者简介 95
第4章 如何构建真实世界的Silverlight 5应用程序 97
4.1 为应用程序设置场景 98
4.2 先原型后代码——使用SketchFlow 99
4.2.1 SketchFlow简介 100
4.2.2 熟悉SketchFlow 100
4.2.3 创建应用程序原型 101
4.3 数据绑定入门 105
4.3.1 Hello,数据绑定 105
4.3.2 创建数据绑定屏幕 108
4.4 WCF RIA服务的应用 110
4.4.1 选择服务层技术 112
4.4.2 Hello,WCF RIA服务 112
4.4.3 创建服务器端代码 114
4.4.4 Silverlight项目 120
4.5 应用MVVM模式 124
4.5.1 不同部分,不同角色 125
4.5.2 选择MVVM方法 126
4.5.3 挑选小助手——MVVM Light 126
4.5.4 重构为MVVM模式 126
4.5.5 听你指挥 131
4.5.6 消息传递 133
4.6 创建自定义控件 134
4.7 小结 137
4.8 作者简介 137
第5章 Silverlight——业务应用程序的一线希望 139
5.1 入门 140
5.1.1 Hello,Business World 140
5.1.2 项目模板 143
5.1.3 XAML是对象XML 145
5.1.4 托管Silverlight应用程序 146
5.1.5 提供卓越的IApplicationService 147
5.2 选择合适的Silverlight框架 148
5.2.1 获取SOLID:MVC、MVP和MVVM 149
5.2.2 依赖注入和控制反转 151
5.2.3 托管扩展框架 152
5.2.4 MVVM框架 155
5.3 使Silverlight即插即用 158
5.3.1 动态加载 158
5.3.2 脱离浏览器的应用程序 159
5.3.3 独立存储 159
5.3.4 通信 160
5.4 Silverlight的未来 161
5.5 小结 161
5.6 作者简介 162
第6章 针对设计者和开发者的提示和技巧 163
6.1 了解Silverlight和WPF之间的区别 163
6.1.1 优先选择XAML 164
6.1.2 理解关注点分离 164
6.2 针对设计者的提示和技巧 164
6.2.1 命名对象 164
6.2.2 在Photoshop中设计 165
6.2.3 从Photoshop中导入资产 165
6.2.4 为了更好的设计体验而使用示例数据 166
6.3 针对开发者的提示和技巧 167
6.3.1 在Design模式中显示示例数据 168
6.3.2 使用行为以使事情更简单 168
6.4 小结 170
6.5 作者简介 170
第7章 Silverlight 4中的MVVM模式 171
7.1 开发自己的框架 171
7.2 了解MVVM 172
7.3 创建MVVM框架 173
7.3.1 框架目标 174
7.3.2 框架技术 175
7.3.3 入门 176
7.3.4 定义ViewModel 178
7.3.5 创建新View和ViewModel 185
7.3.6 注册View和ViewModel 187
7.3.7 显示View 192
7.3.8 构建复合屏幕 197
7.3.9 显示对话框 203
7.3.10 View之间的通信 205
7.3.11 使用MVVM框架 205
7.4 现有MVVM框架 206
7.4.1 Prism 206
7.4 2 MVVM Light 207
7.4.3 Caliburn.Micro 207
7.4.4 其他框架 208
7.5 其他注意事项 208
7.5.1 数据绑定 208
7.5.2 命令 209
7.5.3 数据访问 209
7.6 小结 210
7.7 作者简介 210
第8章 针对Silverlight开发人员的Windows Phone“Mango” 211
8.1 硬件基础 211
8.1.1 Camera API 211
8.1.2 Sensors API 215
8.2 软件基础 217
8.2.1 运行库的改进 218
8.2.2 网络套接字 219
8.2.3 Silverlight/XNA混合应用程序 220
8.2.4 本地数据库 221
8.3 应用程序模型 222
8.3.1 应用程序的快速切换 222
8.3.2 多任务处理 224
8.3.3 通知 226
8.3.4 后台传输服务 227
8.4 集成服务 228
8.4.1 次要Tile 228
8.4.2 推送通知 229
8.4.3 联系人/约会数据访问 230
8.5 小结 231
8.6 作者简介 231
第9章 与WCF的实用服务通信 233
9.1 示例项目 234
9.2 再论面向服务 234
9.2.1 分布意味着通信 235
9.2.2 面向服务 236
9.3 WCF Basics 101 237
9.3.1 基本工具箱 238
9.3.2 B的能力 239
9.3.3 少即是多 240
9.4 应用程序方案 240
9.4.1 需求 241
9.4.2 应用程序体系结构 241
9.4.3 应用程序结构 242
9.5 建模服务 243
9.6 元数据 254
9.6.1 Flat WSDL 255
9.6.2 元数据URL 257
9.7 实现服务 259
9.7.1 验证 259
9.7.2 映射 260
9.7.3 跟踪 263
9.8 托管服务 266
9.8.1 自定义托管 266
9.8.2 使用控制台主机进行测试 267
9.8.3 带有Windows Service的自托管 267
9.8.4 带有WAS的Web托管 270
9.8.5 引导 272
9.9 消费服务 274
9.9.1 共享契约 274
9.9.2 异步调用 275
9.9.3 服务代理模式 275
9.10 对服务方法的补充 279
9.10.1 Web编程模型 279
9.10.2 托管与消费 281
9.11 优化策略 283
9.11.1 调整 283
9.11.2 流模式 287
9.12 小结 289
9.13 作者简介 289
第10章 使用WIF保护WCF服务 291
10.1 .NET应用程序中的身份标识 291
10.1.1 基类库中的身份验证 292
10.1.2 WCF中的身份验证 293
10.1.3 Windows标识基础 294
10.1.4 重述构建基块 298
10.2 WCF和WIF 298
10.2.1 先决条件 299
10.2.2 配置和启用WIF 299
10.2.3 转换和访问声明 308
10.2.4 授权 309
10.2.5 跟踪 312
10.3 保护电影数据库SOAP服务的可能解决方案 312
10.3.1 内部用户 313
10.3.2 添加外部内容提供商 319
10.3.3 访问解决方案 323
10.4 保护电影数据库REST服务的可能解决方案 323
10.4.1 内部用户 324
10.4.2 基于令牌的身份验证 324
10.5 小结 326
10.6 作者简介 326
第11章 实用的.NET任务并行库 327
11.1 问题和解决方案 328
11.2 使用任务 330
11.2.1 Task类 330
11.2.2 闭包 333
11.2.3 应用任务 336
11.3 了解TPL样式的异常处理 340
11.3.1 了解AggregateException 340
11.3.2 实现异常处理 341
11.4 了解取消 342
11.4.1 应用取消——基础知识 342
11.4.2 应用取消——注册操作、互锁 346
11.5 使用并发集合——ConcurrentQueue 347
11.6 了解延续 350
11.6.1 TaskCompletionSource 352
11.6.2 实现延续 353
11.6.3 AsyncState 356
11.7 使用BlockingCollection类 358
11.7.1 使用BlockingCollection 360
11.7.2 了解SpinWait.SpinUntil 363
11.8 小结 365
11.9 作者简介 366
第12章 WF编程语言 367
12.1 入门 367
12.1.1 声明性工作流语法 370
12.1.2 变量和参数 371
12.1.3 表达式 372
12.1.4 属性 373
12.1.5 “动态”属性 373
12.2 控制执行流 374
12.2.1 程序性样式 375
12.2.2 流程图样式 381
12.3 构建自定义活动 388
12.3.1 Activity 388
12.3.2 CodeActivity 390
12.3.3 AsyncCodeActivity 391
12.3.4 NativeActivity 393
12.3.5 了解何时使用自定义活动 395
12.3.6 复合活动 396
12.3.7 活动的生命周期 396
12.4 使用持久性 399
1 2.5 在Windows AppFabric中托管工作流 400
12.6 进一步阅读 401
12.7 小结 402
12.8 作者简介 402
第13章 实用的WPF数据绑定 403
13.1 示例应用程序 403
13.1.1 使用MVVM 404
13.1.2 了解示例应用程序的结构 404
13.1.3 了解Model 405
13.1.4 了解ViewModel 406
13.1.5 了解View 408
13.1.6 使用定位器类 408
13.2 数据绑定概述 413
13.2.1 了解数据上下文 414
13.2.2 了解元素到元素的绑定 414
13.2.3 了解绑定模式 414
13.2.4 基于接口的绑定 415
13.3 使用绑定命令 415
13.3.1 使用MVVM和DelegateCommand 416
13.3.2 创建ViewModel 417
13.3.3 定义ViewModels的命令 418
13.3.4 通过XAML代码绑定命令 420
13.4 使用简单的数据绑定 420
13.5 值的转换 422
13.6 绑定多个属性 424
13.7 绑定到列表 426
13.7.1 使用CollectionViewSource进行过滤 431
13.7.2 显示列表项的详细信息 433
13.7.3 使用数据模板 435
13.7.4 分组 436
13.7.5 使用分层数据绑定 438
13.7.6 绑定长列表 443
13.8 编辑数据 446
13.8.1 更新数据 446
13.8.2 验证 453
13.8.3 显示错误 454
13.8.4 编辑Grid 456
13.9 小结 466
13.10 作者简介 466
第14章 通过用户故事和BDD驱动开发 467
14.1 通过用户故事将需求捕捉为功能 467
14.1.1 正式需求文档所存在的问题 468
14.1.2 使用用户故事来专注业务价值并促进沟通 468
14.1.3 功能方案和故事验收标准 469
14.2 TDD的不足之处 470
14.3 关注带有BDD的行为 470
14.3.1 由外向内开发 470
14.3.2 使用BDD框架将功能转化为代码 472
14.3.3 Tic-Tac-Toe BDD Kata 475
14.4 通过用户故事来获取游戏Tic-Tac-Toe的功能 475
14.5 项目入门 478
14.5.1 方案:开始编写游戏 480
14.5.2 整合Starting a Game方案 491
14.5.3 方案:交替游戏者 492
14.5.4 整合交替游戏者方案 515
14.5.5 方案:显示游戏 516
14.5.6 整合显示游戏方案 529
14.5.7 方案:获得游戏胜利的条件:一排上有三个相同的标记 529
14.5.8 整合一排成三取得游戏胜利的方案 546
14.5.9 完成游戏 546
14.6 更进一步 546
14.7 小结 547
14.8 作者简介 547
第15章 自动化单元测试 549
15.1 了解单元测试 549
15.1.1 作用域、LEGO和连接部件 549
15.1.2 了解测试驱动开发 550
15.2 了解测试先行方法的好处 551
15.2.1 可测试代码 551
15.2.2 自文档化代码 551
15.2.3 防御性代码 551
15.2.4 可维护代码 551
15.2.5 代码味道探测器 551
15.3 面向一个基本示例 552
15.4 分配、行为、断言 553
15.4.1 分配 553
15.4.2 行为 553
15.4.3 断言 553
15.5 代码、测试、框架和运行程序 553
15.5.1 代码 554
15.5.2 测试 554
15.5.3 测试框架 554
15.5.4 测试运行程序 555
15.5.5 使用CI服务器和源代码管理 557
15.6 解决方案/项目的结构 557
15.7 使用NuGet来混合nUnit和VS 2010 558
15.8 带有虚假和仿造的方法 559
15.8.1 虚假依赖注入 559
15.8.2 Mocking框架 561
15.9 类特性、测试特性和特殊方法 562
15.10 测试较难测试的部分——推动边缘 563
15.10.1 MVC 564
15.10.2 MVP 564
15.10.3 MVVM 565
15.11 使用传感变量来重构非测试性代码 566
15.12 在其他实践中使用自动化测试 567
15.13 小结 568
15.14 作者简介 568