新書推薦:
《
朋党之争与北宋政治·大学问
》
售價:HK$
99.7
《
甲骨文丛书·波斯的中古时代(1040-1797年)
》
售價:HK$
88.5
《
以爱为名的支配
》
售價:HK$
62.7
《
台风天(大吴作品,每一种生活都有被看见的意义)
》
售價:HK$
53.8
《
打好你手里的牌(斯多葛主义+现代认知疗法,提升当代人的心理韧性!)
》
售價:HK$
66.1
《
新时代硬道理 广东寻路高质量发展
》
售價:HK$
77.3
《
6S精益管理实战(精装版)
》
售價:HK$
100.6
《
异域回声——晚近海外汉学之文史互动研究
》
售價:HK$
109.8
編輯推薦:
如果你觉得自己对ASP.NET MVC 所知甚少,可利用本书来系统学习;如果你觉得自己足够精通,也一定能通过阅读本书发现知识“盲点”。
√ 以消息流向为主线,对最新的ASP.NET MVC框架从接收请求到响应回复的整个流程进行了细致而深入的讲解。
√ 覆盖路由、Controller的激活、Model元数据的解析、Action方法的选择与执行、参数的绑定与验证、过滤器的执行以及View的呈现。
√ 以实例演示的方式介绍了一系列最佳实践和实用性扩展。
√ 从设计的角度对ASP.NET MVC的架构进行了深入分析,可当作一本架构设计的书来读。
√ 近距离触及ASP.NET MVC框架内核,却未涉及太多高深知识点,阅读门槛并不高。
內容簡介:
《ASP.NET MVC 5 框架揭秘》以一个模拟ASP.NET MVC内部运行机制的“迷你版MVC框架”作为开篇,其目的在于将ASP.NET MVC真实架构的“全景”勾勒出来。接下来《ASP.NET MVC 5 框架揭秘》以请求消息在ASP.NET MVC框架内部的流向为主线将相关的知识点串联起来,力求将“黑盒式”的消息处理管道清晰透明地展示在读者面前。相信精读《ASP.NET MVC 5 框架揭秘》的读者一定能够将ASP.NET MVC从接收请求到响应回复的整个流程了然于胸,对包括路由、Controller的激活、Model元数据的解析、Action方法的选择与执行、参数的绑定与验证、过滤器的执行及View的呈现等相关机制具有深刻的理解。
《ASP.NET MVC 5 框架揭秘》以实例演示的方式介绍了很多与ASP.NET MVC相关的最佳实践,同时还提供了一系列实用性的扩展,相信它们一定能够解决你在真实开发过程中遇到的很多问题。《ASP.NET MVC 5 框架揭秘》最后一章提供的案例不仅用于演示实践中的ASP.NET MVC,很多架构设计方面的东西也包含其中。除此之外,《ASP.NET MVC 5 框架揭秘》在很多章节还从设计的角度对ASP.NET MVC的架构进行了深入分析,所以从某种意义上讲本书可以当成一本架构设计的书来读。
虽然与市面上任何一本相关的书相比,《ASP.NET MVC 5 框架揭秘》走得更远,并更加近距离地触及ASP.NET MVC框架的内核,但是就其内容本身来讲却没有涉及太多“高深莫测”的知识点,所以阅读《ASP.NET MVC 5 框架揭秘》不存在太高的门槛。如果你觉得自己对ASP.NET MVC所知甚少,可以利用《ASP.NET MVC 5 框架揭秘》来系统地学习ASP.NET MVC;如果你觉得自己对ASP.NET MVC足够精通,一定能够在《ASP.NET MVC 5 框架揭秘》中找到相应的“盲点”。
關於作者:
蒋金楠,网名Artech,高级软件顾问。微软6任MVP(Solutions Architecture、ConnectedSystem与Microsoft Integration)。著《WCF全面解析》(上、下册)《ASP.NET MVC4框架揭秘》《ASP.NET Web API 2技术揭秘》等.NET领域畅销名著。对.NET Framework、C#、ASP.NET、SQLServer、设计模式、软件架构,以及主流的开源框架有着深入的研究。尤其是在WCF技术方面,属国内较早接触WCF的人之一,同时对.NETRemoting、MSMQ通信技术有深入的理解。博客园推荐博客(目前排名第一),2012年度51CTOIT博客大赛10佳。
目錄 :
第1章 ASP.NET + MVC
1.1 传统MVC模式
1.1.1 自治视图
1.1.2 什么是MVC模式
1.2 MVC的变体
1.2.1 MVP
1.2.2 Model 2
1.2.3 ASP.NET MVC与Model 2
1.3 IISASP.NET管道
1.3.1 IIS 5.x与ASP.NET
1.3.2 IIS 6.0与ASP.NET
1.3.3 IIS 7.0与ASP.NET
1.3.4 ASP.NET集成
1.3.5 ASP.NET管道
1.4 ASP.NET MVC是如何运行的
1.4.1 建立在"迷你版"ASP.NET MVC上的Web应用
1.4.2 路由
1.4.3 Controller的激活
1.4.4 Action的执行
1.4.5 完整的流程
第2章 路由
2.1 ASP.NET路由
2.1.1 请求URL与物理文件的分离
2.1.2 实例演示:通过路由实现请求地址与.aspx页面的映射(S201)
2.1.3 Route与RouteTable
2.1.4 路由注册
2.1.5 根据路由规则生成URL
2.2 ASP.NET MVC路由
2.2.1 路由映射
2.2.2 路由注册(S210)
2.2.3 缺省URL参数
2.2.4 基于Area的路由映射
2.2.5 链接和URL的生成
2.3 动态HttpHandler映射
2.3.1 UrlRoutingModule
2.3.2 PageRouteHandler与MvcRouteHandler
2.3.3 ASP.NET路由系统扩展
2.3.4 实例演示:通过自定义Route对ASP.NET路由系统进行扩展
(S214)
第3章 Controller的激活
3.1 Controller激活系统全景展示
3.1.1 Controller
3.1.2 ControllerFactory
3.1.3 ControllerBuilder
3.1.4 Controller的激活与路由
3.2 Controller默认激活机制
3.2.1 Controller类型的解析
3.2.2 Controller类型的缓存
3.2.3 Controller的释放和会话状态行为的控制
3.3 IoC的应用
3.3.1 从Unity来认识IoC
3.3.2 Controller与Model的解耦
3.3.3 基于IoC的ControllerFactory
3.3.4 基于IoC的ControllerActivator
3.3.5 基于IoC的DependencyResolver
第4章 Model元数据的解析
4.1 Model元数据
4.1.1 Model元数据层次化结构
4.1.2 Model元数据的定制
4.1.3 IMetadataAware接口
4.2 模板化数据的呈现
4.2.1 实例演示:通过模板将布尔值显示为RadioButton(S409)
4.2.2 预定义模板
4.2.3 针对数据类型的模板
4.2.4 数据类型名称 V.S. 模板名称
4.2.5 模板的获取与执行
4.2.6 实例演示:通过定制Model元数据和自定义模板 实现预定义列表的
呈现(S412)
4.3 Model元数据的提供机制
4.3.1 再谈ModelMetadata
4.3.2 ModelMetadataProvider
4.3.3 Model元数据提供系统的扩展
第5章 3个描述对象
第6章 Model的绑定(上篇)
第7章 Model的绑定(下篇)
第8章 Model的验证(上篇)
第9章 Model的验证(下篇)
第10章 Action方法的执行
第11章 View的呈现
第12章 过滤器
第13章 特性路由
第14章 案例实践
附录A 实例列表
內容試閱 :
ASP.NET MVC是一个建立在ASP.NET平台上基于MVC模式的Web开发框架,它提供了一种与Web Form完全不同的开发方式。ASP.NET Web Form借鉴了Windows Form基于控件和事件注册的编程模式,使Web应用的开发变得简单而快捷,但是它却使开发人员与Web的本质渐行渐远。ASP.NET MVC是一种回归,它使开发人员可以真正地面向Web进行编程,我们面对的不再是拖拉到Web页面的控件,而是整个HTTP请求和响应的流程。
这不是一本传统意义上的入门书籍
在《ASP .NET MVC 4框架揭秘》出版之后,读者通过多种渠道将他们对本书的看法、建议和意见反馈给笔者。有一些读者觉得本书对他们来说太“深”了,因为他们希望买到的是一本单纯的入门书籍,所以我不得不再次强调——“这不是一本传统意义上的入门书籍”。如果你之前根本没有接触过ASP.NET MVC,并且希望有一本书能够让你在一两个星期内掌握ASP.NET MVC 的基本编程模式,那么笔者觉得选择本书并不是明智的。
笔者个人认为掌握ASP.NET MVC具有3个层次。了解基本的编程模式,掌握Controller和View的定义方式,知道路由如何注册及验证规则如何定义,此为第一层次。第二层次要求我们对ASP.NET MVC框架本身从请求接收到响应回复的整个流程有一个清晰的认识,这包括请求如何被路由、目标Controller如何被激活、Model元数据如何被解析、Action方法如何被执行、View如何呈现等。ASP.NET MVC本身是一个极具可扩展的开发框架,合理利用其扩展性可以解决很多开发中的实际问题,而掌握ASP.NET MVC的最高层次就是凭着对框架本身的运行机制的了解准确地找到相应的扩展点,并创建相应的扩展来解决我们遇到的问题。
本书不是一本ASP.NET MVC入门书籍,而是一本让处于第一层次的读者快速进入第二和第三层次的书。如果你具有进入更高层次的需求,并且有充裕的时间来阅读,笔者坚信你一定能够通过此书获得其他同类书籍难以提供的东西。
不少人觉得本书过于“深入”,但笔者个人宁愿说本书“走得更远”。虽然本书比其他同类书籍更加近距离地触摸到了ASP.NET MVC 框架的内核,但就其内容本身来说,笔者认为本书并没有什么“深不可测”的东西。尽管本书不是一本纯粹意义上的入门书籍,但是笔者绝不会根据读者个人的技术水平将其排除在本书的读者范围之外。如果读者具有基本的.NET方面的知识储备,并且从事过简单的Web开发,阅读本书不会有太大的障碍。
这是一本讲述ASP.NET MVC框架本质的书
很多.NET开发人员都在抱怨微软开发技术过快的更新频率让他们无所适从,其实他们看到的只是单纯的版本升级而已,一些本质的东西一直是“稳定”的。微软推出.NET战略已经十多年了,CLR却只有4个版本而已。最新版本的ASP.NET虽然表面上已经看不到太多最初的影子,但是整个请求处理的管道一直未曾改变。对于一项开发技术,只要我们了解了它最根本性的一些东西,不但不应该惧怕其高频率的版本更替,而应该热烈拥抱它。本书力求将关于ASP.NET MVC框架最根本的东西带给大家,而不是罗列一些简单的编程技巧。
这本书与《ASP .NET MVC 4框架揭秘》有何不同
本书针对最新版本的ASP.NET MVC ,所以ASP.NET MVC 5提供的新特性和对ASP.NET MVC 4现有特性的改变自然体现在本书之中。通过微软“官方”渠道发布的信息我们知道,“特性路由”和“认证过滤器”是ASP.NET MVC 5提供的两个新特性,我们在本书中会通过单独的章节(第13章“特性路由”)来对特性路由作详细讲解,针对认证过滤器的介绍则放到新增加的一章(第12章“过滤器”)中。
除了这些通过官方渠道了解到的改变之外,其实微软在ASP.NET MVC 5框架内部作了很多的改进,这些东西只有当我们深入去分析其源码时才有可能发现。这些“不为人知”的内容也包含在本书之中,如果你手中正好有一本《ASP.NET MVC 4框架揭秘》,在阅读的时候对照一下就知道了。
本书除了反映ASP.NET MVC 5本身的改变之外,还对前版一些遗漏掉的知识点进行了补充。为了让读者更好地理解本书的内容并尽可能地迎合大多数人的思维方式,我们在写作过程中对整本书的结构作了调整,同时对一些表达方式作了相应的改变。
和大部分ASP.NET MVC的书籍一样,《ASP.NET MVC 4框架揭秘》利用一个单独的章节来介绍Web API,这种做法实际上给很多读者造成了一种误解,让他们觉得ASP.NET Web API仅仅是ASP.NET MVC的附属产品。实际上两者不但在运行上使用不同的消息处理管道,并且这两个管道在设计上也是截然不同的,所以本书中找不到任何关于ASP.NET Web API的内容。如果你希望深入系统地学习ASP.NET Web API,可以考虑本书的姊妹篇《ASP.NET Web API 2框架揭秘》。
这是一本实用的书吗?
可能有人觉得这本剖析ASP.NET MVC框架运行原理的书没有什么“实际”的意义,因为我们每天的日常工作就是编程,知道了ASP.NET MVC从请求接收到响应回复之间整个处理流程并不会对我们的工作造成实质性的改变,这是一种极端错误的想法。学习一种软件开发技术就像是练一门功夫,不仅要苦练攻敌招式,还得研习内功心法。编程模式是攻敌招式,框架背后的设计原理是内功心法,没有内功心法支撑的招式只能是花拳绣腿,而具有极高内功修为的高手却能“无招胜有招”。
除此之外,由于我们编写的程序最终是在ASP.NET MVC框架上运行的,程序的高效性决定了它是否能够最大限度地“迎合”框架的运行机制,所以了解ASP.NET MVC框架的运行原理有利于我们写出高质量的程序。
很多读者都问笔者为何有那么多时间和精力去深入学习多个不同的开发框架(比如WCF、ASP.NET MVC和ASP.NET Web API等),其实这和从事的工作有关。多年以来,笔者在公司所作的工作就是设计、开发和维护一套内部的开发框架,这个框架的根本目的在于让我们可以采用一种类似于流水线的项目开发方式,不仅可以提高开发效率,还能提高项目本身的质量并降低对最终开发人员的技能要求,实现的途径就是让最终的开发人员只关心具体业务功能的实现,所有非业务功能都由框架本身来完成。
为了完成这个使命,我们针对.NET平台上的开发技术作了很多扩展。为了能够精准地定位采用的扩展点,我们不得不对开发技术本身有一个深刻的认识,所以深入学习.NET平台主流开发技术是笔者的本质工作之一。为了将这些实用的扩展服务于大众,笔者将这些扩展放到了相关的书籍之中。笔者自然不会将我们做的东西直接共享出来(因为这是违法的),所以书中涉及的这些扩展都经过刻意简化,因为笔者希望的不是让读者直接使用这些扩展,而是根据其体现出来的原理来设计你们需要的扩展。
ASP.NET MVC之外的一些东西
在笔者的周围存着这样的一些人,他们以刚毕业一两年的毕业生为主。他们大都工作勤奋、聪明好学,手中经常捧着GoF的《设计模式》,总是希望在将书中的设计模式应用到具体项目之中,或者希望通过项目的实践来印证他们在书本上的设计模式,但是理论和实践之间的距离总让他们感到困惑。
要从真实的项目或者产品中学习“实用”的软件架构设计知识,先得确定目标项目或者产品中采用的架构思想和设计模式是正确的,而我们参与的很多项目其实被“架构”得一塌糊涂。对于像ASP.NET这样的产品,其基础架构能够在很长一段时间内保持不变,本身就证明了应用在上面的架构设计的正确性,它们不正是我们学习架构设计最好的素材吗?本书对ASP.NET MVC框架的运行机制进行了深入剖析,实际上是将ASP.NET MVC的整个设计展示在读者面前,读者也许可以将本书作为一本“架构设计”的书来读。
很多读者向笔者咨询针对一种新的开发技术,如何才能更加有效地掌握其“精髓”。这是一个关于学习方法的问题,笔者个人采用的学习方法不可能适用于所有的人。尽管如此,本书也或多或少地体现了笔者个人采用的学习方法,所以在论述某个知识点的时候,不但会告诉读者“是什么”和“为什么”,还会告诉读者“如何证明是这样”。换句话说,笔者不仅仅将某个论点抛给你,还会为你展现整个论证的过程。
本书的写作特点
和其他同类书籍作者总是从“静态编程”作为切入点不同,笔者以“动态执行”的视角来审视ASP.NET MVC框架。本书以框架本身处理请求的流程为主线,力求将ASP.NET MVC框架从接收请求到回复响应的整个流程完整而清晰地展现在读者面前。在本书的第1章中,我们设计了一个“迷你版”的ASP.NET MVC框架,其目的在于让读者能够对ASP.NET MVC的执行管道有一个整体的认识,至于组成这个管道的每个环节,则通过后续的章节对其架构设计进行详细介绍,对其执行原理进行深入剖析。
本书具有一个与其他中文原创或者翻译书籍截然不同的特点,那就是几乎所有的术语都采用英文,比如Controller、Action和Model在本书中并没有翻译成中文“控制器”、“操作”和“模型”。因为笔者认为很多术语其实很难找到一个语义完全等同的中文词组或短语与之对应,对于习惯了英文作为“开发语言”的读者来说,强行翻译其实是不必要的。
除此之外,这不是一本纯理论的书,而是一本“实证型”的书,在书中提供了一百多个可供单独下载的实例演示。这些实例在本书中具有不同的作用,有的是为了探测和证明对应的论点,有的是为了演示某种实用的编程技巧。
关于作者
蒋金楠(网名Artech),《WCF全面解析(上、下册)》、《ASP.NET MVC 4框架揭秘》、《ASP.NET Web API2框架揭秘》等多部畅销IT图书作者,现就职于一知名软件公司担任高级软件顾问。拥有一个访问量超过200万的个人博客(http:www.cnblogs.comartech),2012年度51CTO IT博客大赛十佳得主。2007—2013年被连续7次评为微软MVP,同时也是少数几个跨多领域(Solutions Architect、Connected System、Microsoft Integration和ASP.NETIIS)的MVP之一。
致谢
本书得以出版,需要感谢博文视点的编辑,你们的专业水准和责任心是为本书提供的质量保证,多次合作产生的默契让我对下次合作充满期待。此外,最需要感谢的是我的老婆徐妍妍,只有我知道你在本书提交给出版社之前所作的校对工作有多么重要。
本书支持
本书针对最新版本的ASP.NET MVC,同时涉及太多底层实现的内容,所以大部分内容是找不到任何现成参考资料的,这些内容大都来自于笔者对源码的分析和试验的证明。这些因素加上作者自身能力的限制,都可能造成一些无法避免的错误或者偏差,如果读者在阅读过程中发现了任何问题,希望能够加以反馈。如果读者遇到任何ASP.NET MVC、ASP.NET Web API或者WCF的问题,欢迎与我通过以下的方式进行交流。
作者博客:http:www.cnblogs.comartech
作者微博:http:www.weibo.comartech
电子邮箱:jiangjinnan@gmail.com
微信公众账号:Artech1981
本书每一章节都会提供一系列实例演示,读者可以根据编号(比如S101、S202 等)从下载的源代码压缩包中找到对应的实例。本书的附录部分给出了所有源代码可供下载的所有实例演示的列表和相关描述。
源代码下载地址:https:onedrive.live.comredir?resid=5760EBEEB92818D2%21109