具体描述
使用ASP.NET MVC开发新一代Web应用程序
深入了解ASP.NET MVC 5的架构和特性,并学习构建在桌面和移动设备上都运行良好的Web应用程序。Web开发专家Dino Esposito将带你全面了解Web框架的模型-视图-控制器(MVC)设计模型,并为你介绍用以完整分离业务逻辑和用户界面的工具。如果你是经验丰富的Web开发人员,且刚开始接触ASP.NET MVC,这本实践指导类的书将助你顺利打开ASP.NET MVC的开发之门。
主要内容
◆ 构建易于测试和维护的Web应用程序
◆ 深入研究控制器功能——MVC站点核心
◆ 探索视图引擎的结构和运转情况
◆ 使用自定义模型绑定器处理各种输入数据
◆ 自动化输入表单的编写和简化验证
◆ 设计用于移动设备、本地化以及错误处理的网站
◆ 通过实现成员资格和身份标识系统来提供安全性
◆ 使用JavaScript和jQuery将脚本代码注入站点
◆ 使用响应式网页设计和无线通用资源文件(WURFL)
◆ 让网站适合移动设备
作者简介
Dino Esposito是著名的Web和移动开发专家。他常常活跃在行业活动中,包括在DevConnections和微软技术大会上做演讲,并不时为MSDN杂志和其他出版物供稿。他已经撰写了多部由微软出版社出版的畅销书籍,包括Architecting Mobile Solutions for the Enterprise。
目录信息
第I部分 ASP.NET MVC基础
第1章 ASP.NET MVC控制器 3
1.1 对输入请求进行路由 4
1.1.1 模拟ASP.NET MVC运行时 4
1.1.2 URL路由HTTP模块 7
1.1.3 应用程序路由 9
1.2 控制器类 15
1.2.1 控制器的特征 15
1.2.2 编写控制器类 17
1.2.3 处理输入数据 22
1.2.4 产生操作结果 25
1.3 本章小结 30
第2章 ASP.NET MVC视图 33
2.1 视图引擎的结构与性能 34
2.1.1 视图引擎的机制 34
2.1.2 视图模板定义 39
2.2 HTML帮助器 42
2.2.1 基础帮助器 43
2.2.2 模板化帮助器 49
2.2.3 自定义帮助器 51
2.3 Razor视图引擎 54
2.3.1 视图引擎的内部机制 54
2.3.2 设计一个样例视图 59
2.4 视图编码 65
2.4.1 视图建模 65
2.4.2 高级功能 71
2.5 本章小结 74
第3章 模型绑定架构 75
3.1 输入模型 76
3.1.1 Web Forms输入处理的演变 76
3.1.2 ASP.NET MVC中的输入处理 77
3.2 模型绑定 78
3.2.1 模型绑定的基础结构 78
3.2.2 默认模型绑定器 79
3.2.3 默认绑定器的可自定义方面 91
3.3 高级模型绑定 93
3.3.1 自定义类型绑定器 93
3.3.2 DateTime模型绑定器示例 96
3.4 本章小结 102
第4章 输入表单 103
4.1 数据输入的一般模式 104
4.1.1 一个经典的选择-编辑-提交场景 104
4.1.2 应用提交-重定向-获
取(Post-Redirect-Get)模式 111
4.2 输入表单的自动化编写 117
4.2.1 预定义的显示和编辑器模板 117
4.2.2 用于模型数据类型的自定义模板 126
4.3 输入验证 130
4.3.1 使用数据批注 131
4.3.2 高级数据批注 136
4.3.3 自我验证 143
4.4 本章小结 147
第II部分 ASP.NET MVC软件设计
第5章 ASP.NET MVC应用程序的特性 151
5.1 ASP.NET内部对象 151
5.1.1 HTTP响应和SEO 152
5.1.2 管理会话状态 155
5.1.3 缓存数据 156
5.2 错误处理 163
5.2.1 处理程序异常 163
5.2.2 全局错误处理 169
5.2.3 处理缺失内容 173
5.3 本地化 175
5.3.1 使用可本地化的资源 176
5.3.2 处理可本地化的应用程序 183
5.4 本章小结 188
第6章 应用程序安全性 189
6.1 ASP.NET MVC中的安全性 189
6.1.1 身份验证和授权 190
6.1.2 将身份验证和授权分开 192
6.2 实现成员资格系统 195
6.2.1 定义成员资格控制器 196
6.2.2 记住我(Remember-Me)特性与Ajax 205
6.3 外部身份验证服务 208
6.3.1 OpenID协议 209
6.3.2 通过社交网络进行身份验证 217
6.4 本章小结 224
第7章 设计ASP.NET MVC控制器的注意事项 227
7.1 打造你的控制器 227
7.1.1 选择正确的原型 228
7.1.2 精简的控制器 231
7.2 连接表示层与后端 238
7.2.1 分层架构模式 239
7.2.2 在层中注入数据和服务 245
7.2.3 获得对控制器工厂的控制权 251
7.3 本章小结 254
第8章 自定义ASP.NET MVC控制器 255
8.1 ASP.NET MVC的扩展模型 255
8.1.1 基于提供程序的模型 256
8.1.2 服务定位器模式 259
8.2 在控制器中添加特性 263
8.2.1 操作筛选器 263
8.2.2 操作筛选器库 267
8.2.3 特殊筛选器 275
8.2.4 构建动态的加载筛选器 280
8.3 操作结果类型 286
8.3.1 内置的操作结果类型 286
8.3.2 自定义结果类型 292
8.4 本章小结 301
第9章 ASP.NET MVC中的测试与可测试性 303
9.1 可测试性和设计 304
9.1.1 DfT 304
9.1.2 松散设计 305
9.2 单元测试的基本知识 310
9.2.1 使用测试工具 310
9.2.2 测试的特性 315
9.3 测试ASP.NET MVC代码 320
9.3.1 应该测试哪部分代码 320
9.3.2 对ASP.NET MVC代码进行单元测试 323
9.3.3 处理依赖性 327
9.3.4 模拟HTTP上下文 329
9.4 本章小结 337
第10章 Web API的执行指南 339
10.1 Web API的来龙去脉 339
10.1.1 标准化HTTP API的需求 340
10.1.2 MVC控制器与Web API对比 341
10.2 让Web API开始工作 343
10.2.1 设计RESTful接口 344
10.2.2 预期的方法行为 348
10.2.3 使用Web API 351
10.2.4 设计面向RPC的接口 354
10.2.5 安全性考量 358
10.3 协商响应格式 361
10.3.1 ASP.NET MVC方式 361
10.3.2 内容协商是如何在Web API中运行的 362
10.4 本章小结 366
第III部分 移动客户端
第11章 有效的JavaScript 369
11.1 重温JavaScript语言 370
11.1.1 语言基础知识 370
11.1.2 JavaScript中的面向对象 375
11.2 jQuery的执行摘要 379
11.2.1 DOM查询与包装集 379
11.2.2 选择器 382
11.2.3 事件 386
11.3 JavaScript编程特性 389
11.3.1 无侵入性代码 389
11.3.2 可重用封装和依赖性 390
11.3.3 加载脚本和资源 393
11.3.4 捆绑和缩小 396
11.4 本章小结 400
第12章 让网站对移动端友好 401
12.1 在站点上启用移动端技术 401
12.1.1 HTML5对忙碌的开发人员意味着什么 402
12.1.2 RWD 409
12.1.3 jQuery Mobile的执行摘要 415
12.1.4 Twitter Bootstrap概览 425
12.2 为已有站点添加移动功能 432
12.2.1 将用户路由到正确的站点 433
12.2.2 从移动端到设备 438
12.3 本章小结 438
第13章 构建用于多种设备的站点 441
13.1 理解ASP.NET MVC中的显示模式 442
13.1.1 分离移动视图和桌面视图 442
13.1.2 选择显示模式的规则 444
13.1.3 添加自定义显示模式 445
13.2 WURFL数据库介绍 448
13.2.1 存储库的结构 449
13.2.2 基础WURFL性能 453
13.3 在ASP.NET MVC显示模式下使用WURFL 456
13.3.1 配置WURFL框架 456
13.3.2 检测设备性能 458
13.3.3 使用基于WURFL的显示模式 461
13.3.4 WURFL云API 466
13.4 为什么应该考虑服务器端解决方案 467
13.5 本章小结 468
· · · · · · (收起)
读后感
用户评价
学习ASP.NET MVC 5的过程中,我最大的挑战之一是如何有效地管理和维护项目中的各种配置信息,以及如何处理跨领域的依赖关系。这本书在这方面给我带来了极大的启发。它不仅详细讲解了ASP.NET MVC 5内置的配置管理机制,比如`web.config`和`appsettings.json`的用法,还深入探讨了如何利用依赖注入(Dependency Injection)来解耦代码,提高可测试性。特别是对Unity、Autofac等流行的DI容器的介绍和使用,让我看到了如何将复杂系统的各个部分清晰地划分开来,并且能够方便地进行替换和扩展。这对于我来说,不仅仅是学习了一个新的技术点,更是理解了一种先进的软件设计理念,这对于我今后的软件开发之路,有着深远的影响。
这本书的内容实在是太丰富了,我感觉我仿佛踏入了一个全新的ASP.NET MVC 5的领域,而且还是以一种极其踏实、稳健的方式。一开始,我只是想了解一些基础概念,比如路由、控制器、视图这些,但这本书的讲解方式,它不仅仅是告诉你“是什么”,更是深入浅出地剖析了“为什么”。比如,当讲到路由的时候,它并没有停留在简单的URL匹配,而是详细解释了路由的优先级、如何自定义路由约束、甚至是如何处理复杂的URL结构,这让我瞬间明白了MVC架构中路由扮演的核心角色,以及它对整个应用程序的可维护性和SEO的重要性。然后,它又把目光投向了数据访问,ORM(对象关系映射)的讲解,特别是Entity Framework的使用,简直是我的福音。我之前在处理数据库的时候,经常是CRUD操作写得手软,效率低下,而且容易出错。这本书通过Entity Framework,让我看到了如何以一种面向对象的方式来操作数据库,模型绑定、代码优先、数据库优先,各种策略都讲得明明白白,还附带了大量实际案例,让我能够立刻上手,构建出高效、易于维护的数据层。
这本书的内容深度和广度都让我感到非常惊喜。它不仅仅是讲解了ASP.NET MVC 5的核心技术,更是涉及到了很多与Web开发密切相关的周边技术和最佳实践。比如,书中对于RESTful API的设计和实现,我之前一直觉得比较模糊,但通过这本书的讲解,我终于理解了RESTful架构的核心原则,并且学会了如何在MVC中构建出规范、高效的API接口。这对于我今后与其他系统进行数据交互,或者开发独立的移动端应用,都提供了非常坚实的基础。此外,书中还对单元测试和集成测试进行了深入的探讨,让我看到了如何通过自动化测试来保证代码的质量和稳定性,这对于任何一个负责任的开发者来说,都是一项不可或缺的技能。
这本书对于我来说,就像是一张详细的地图,指引我在ASP.NET MVC 5的广阔世界里,找到最有效率、最正确的路线。在我困惑于如何进行高效的错误处理和日志记录时,书中提供的详尽讲解,让我茅塞顿开。它不仅仅是告诉你如何捕获异常,而是深入探讨了不同类型的异常处理机制,比如全局异常过滤器、自定义异常处理器,以及如何集成第三方日志库,让我在遇到问题时,能够快速定位,并且能够留下足够的调试信息,这对于线上应用的维护和故障排除,简直是不可或缺的。我还记得,在处理用户权限和角色管理的时候,我曾经感到非常头疼,因为这涉及到很多安全方面的考量。而这本书,它提供了一整套完善的解决方案,从ASP.NET Identity的集成,到如何自定义授权策略,再到如何进行细粒度的权限控制,都讲解得非常到位,并且提供了很多实用的代码示例,让我能够快速构建出安全可靠的用户系统。
在开发Web应用程序的过程中,安全性一直是我的重中之重。这本书对于ASP.NET MVC 5安全方面的讲解,让我感到非常安心。它不仅仅停留在简单的HTTPS加密,而是全面地覆盖了Web应用程序开发中常见的安全威胁,比如SQL注入、XSS攻击、CSRF攻击等等,并且针对每一种威胁,都提供了详细的防范措施和最佳实践。我印象最深刻的是关于跨站请求伪造(CSRF)的讲解,它不仅解释了CSRF的原理,还提供了如何在MVC中利用AntiForgeryToken(AntiForgeryToken)来有效地抵御这种攻击。此外,书中还对身份验证和授权机制进行了深入的剖析,让我能够构建出更加安全、可靠的用户认证和权限管理系统,这对于保护用户数据和企业资产至关重要。
阅读这本书的过程,就像是在进行一场深入的知识探索。它不仅仅是堆砌技术名词,而是通过一个个生动的案例和详细的步骤,将复杂的概念变得易于理解。我尤其喜欢书中关于AJAX和JavaScript集成部分的讲解。在之前的开发中,我常常会觉得MVC和前端JavaScript的结合比较棘手,容易出现各种兼容性问题。但这本书,它巧妙地展示了如何利用Razor视图的强大功能,来无缝地集成JavaScript代码,并且如何通过AJAX技术,实现局部页面的更新,从而提升用户体验。它还介绍了如何利用jQuery等JavaScript库来简化DOM操作和AJAX请求,让我看到了如何将MVC的后端逻辑与前端的交互操作完美地结合起来,构建出更加动态、响应式的Web应用。
坦白说,在翻阅这本书之前,我对“构建在桌面和移动设备运行同样精彩的Web应用”这个副标题是有些半信半疑的。毕竟,在不同设备上实现统一且优秀的用户体验,听起来就不是一件容易的事。但这本书用它详实的内容,一点点打消了我的疑虑。它不仅仅停留在ASP.NET MVC 5的核心开发,而是巧妙地引入了响应式设计的理念,并且循序渐进地展示了如何将这些概念融入到MVC的开发流程中。从Bootstrap等前端框架的应用,到如何利用CSS媒体查询来适应不同屏幕尺寸,再到如何优化图片和资源以适应移动端的带宽限制,这些都是我之前在开发中常常忽略但又至关重要的细节。更让我惊喜的是,它还讲解了如何通过一些特定的MVC技巧,比如利用Razor视图的强大功能,来动态地调整HTML结构和内容,以达到在不同设备上都能呈现最佳用户界面的效果。这些实践性的指导,让我看到了如何真正将“响应式”这个概念落地,而不是停留在口号层面。
一直以来,我都在寻找能够提升Web应用程序性能的方法,尤其是在处理大量用户请求和复杂数据交互的场景下。这本书恰恰满足了我的需求。它不仅仅停留在MVC的基础功能讲解,而是花了相当大的篇幅来探讨如何优化Web应用程序的性能。从前端的资源压缩、缓存策略,到后端的数据库查询优化、异步编程的应用,再到如何利用CDN加速静态资源的加载,这本书都提供了非常具体、可操作的建议和方法。我尤其印象深刻的是关于异步编程的讲解,它不仅阐述了`async`和`await`关键字的用法,更是深入分析了在MVC中如何利用它们来提高应用程序的响应速度和并发处理能力,这让我看到了如何让我的Web应用在面对高并发场景时,依然能够保持流畅和稳定。
我一直认为,一个好的技术书籍,不仅仅要传授知识,更要教会读者如何思考。而这本书在这方面做得尤为出色。它在讲解每一个技术点的时候,都会不厌其烦地分析其背后的设计思想和原理。比如,在讲解模型验证的时候,它深入分析了为什么需要验证,以及不同的验证策略(比如客户端验证和服务器端验证)分别有什么优劣,并提供了如何在MVC中结合使用它们,以达到最好的用户体验和数据安全。这种“知其然,更知其所以然”的学习方式,让我不仅掌握了如何实现功能,更理解了为什么这么做,从而在遇到新的问题时,能够举一反三,灵活运用所学知识。此外,书中对于代码组织和项目架构的讲解,也让我受益匪浅。它不仅仅教你写代码,更教你如何写出结构清晰、易于扩展和维护的代码,这对于开发大型、复杂的Web应用程序来说,是至关重要的。
我一直坚信,优秀的技术书籍应该能够激发读者的学习热情,并且提供持续的价值。这本书无疑做到了。它在讲解每一个技术点的时候,都充满了热情和深度,让我不仅仅是学习了“如何做”,更是理解了“为什么这样做”。我非常欣赏书中对于“可维护性”和“可扩展性”的强调。它不仅仅教你如何快速地实现一个功能,更是引导你思考如何构建一个能够经受住时间考验的系统。例如,在讲解模型绑定和视图模型的时候,它不仅演示了如何操作,更深入分析了不同场景下应该选择哪种方式,以及为什么。这种前瞻性的指导,让我看到了如何避免一些常见的技术债务,从而构建出更加健壮、易于维护的Web应用程序。这本书,绝对是我ASP.NET MVC 5学习道路上的一盏明灯。
我觉得译者可能对“实战”这个概念有点误解……英文书名就是“Programming Microsoft ASP.NET MVC”,内容上也没有提到什么实际的东西,全书都是在介绍特性,有的概念连代码也没给全,观感极差
我觉得译者可能对“实战”这个概念有点误解……英文书名就是“Programming Microsoft ASP.NET MVC”,内容上也没有提到什么实际的东西,全书都是在介绍特性,有的概念连代码也没给全,观感极差
我觉得译者可能对“实战”这个概念有点误解……英文书名就是“Programming Microsoft ASP.NET MVC”,内容上也没有提到什么实际的东西,全书都是在介绍特性,有的概念连代码也没给全,观感极差
我觉得译者可能对“实战”这个概念有点误解……英文书名就是“Programming Microsoft ASP.NET MVC”,内容上也没有提到什么实际的东西,全书都是在介绍特性,有的概念连代码也没给全,观感极差
我觉得译者可能对“实战”这个概念有点误解……英文书名就是“Programming Microsoft ASP.NET MVC”,内容上也没有提到什么实际的东西,全书都是在介绍特性,有的概念连代码也没给全,观感极差