《ASP.NET MVC 5 框架揭秘》

《ASP.NET MVC 5 框架揭秘》

基本信息

作者: 蒋金楠

出版社:电子工业出版社

ISBN:9787121237812

上架时间:2014-8-1

出版日期:2014 年8月

开本:16开

页码:656

版次:1-1

所属分类:计算机 > 软件与程序设计 > .NET > ASP.NET

更多关于》》》 《ASP.NET MVC 5 框架揭秘》

 

编辑推荐

如果你觉得自己对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 框架揭秘》中找到相应的“盲点”。

目录

《asp.net mvc 5 框架揭秘》

第1章 asp.net + mvc 1

1.1 传统mvc模式 2

1.1.1 自治视图 2

1.1.2 什么是mvc模式 3

1.2 mvc的变体 4

1.2.1 mvp 5

1.2.2 model 2 13

1.2.3 asp.net mvc与model 2 15

1.3 iis/asp.net管道 15

1.3.1 iis 5.x与asp.net 16

1.3.2 iis 6.0与asp.net 17

1.3.3 iis 7.0与asp.net 19

1.3.4 asp.net集成 20

1.3.5 asp.net管道 22

1.4 asp.net mvc是如何运行的 28

1.4.1 建立在“迷你版”asp.net mvc上的web应用 28

1.4.2 路由 31

1.4.3 controller的激活 37

1.4.4 action的执行 41

1.4.5 完整的流程 49

第2章 路由 51

2.1 asp.net路由 52

2.1.1 请求url与物理文件的分离 52

2.1.2 实例演示:通过路由实现请求地址与.aspx页面的映射(s201) 53

2.1.3 route与routetable 57

2.1.4 路由注册 65

2.1.5 根据路由规则生成url 77

2.2 asp.net mvc路由 79

2.2.1 路由映射 79

2.2.2 路由注册(s210) 80

2.2.3 缺省url参数 83

2.2.4 基于area的路由映射 85

2.2.5 链接和url的生成 91

2.3 动态httphandler映射 98

2.3.1 urlroutingmodule 99

2.3.2 pageroutehandler与mvcroutehandler 100

2.3.3 asp.net路由系统扩展 101

2.3.4 实例演示:通过自定义route对asp.net路由系统进行扩展(s214) 102

第3章 controller的激活 107

3.1 controller激活系统全景展示 108

3.1.1 controller 108

3.1.2 controllerfactory 114

3.1.3 controllerbuilder 115

3.1.4 controller的激活与路由 122

3.2 controller默认激活机制 125

3.2.1 controller类型的解析 125

3.2.2 controller类型的缓存 130

3.2.3 controller的释放和会话状态行为的控制 131

3.3 ioc的应用 133

3.3.1 从unity来认识ioc 133

3.3.2 controller与model的解耦 135

3.3.3 基于ioc的controllerfactory 137

3.3.4 基于ioc的controlleractivator 143

3.3.5 基于ioc的dependencyresolver 145

第4章 model元数据的解析 149

4.1 model元数据 150

4.1.1 model元数据层次化结构 150

4.1.2 model元数据的定制 154

4.1.3 imetadataaware接口 171

4.2 模板化数据的呈现 176

4.2.1 实例演示:通过模板将布尔值显示为radiobutton(s409) 176

4.2.2 预定义模板 178

4.2.3 针对数据类型的模板 185

4.2.4 数据类型名称 v.s. 模板名称 189

4.2.5 模板的获取与执行 193

4.2.6 实例演示:通过定制model元数据和自定义模板 实现预定义列表的呈现(s412)197

4.3 model元数据的提供机制 205

4.3.1 再谈modelmetadata 206

4.3.2 modelmetadataprovider 210

4.3.3 model元数据提供系统的扩展 214

第5章 3个重要的描述对象 217

5.1 controllerdescriptor 218

5.1.1 reflectedcontrollerdescriptor 219

5.1.2 reflectedasynccontrollerdescriptor 228

5.2 actiondescriptor 229

5.2.1 asyncactiondescriptor 230

5.2.2 reflectedactiondescriptor 231

5.2.3 reflectedasyncactiondescriptor 232

5.2.4 taskasyncactiondescriptor 233

5.3 parameterdescriptor 234

第6章 model的绑定(一) 236

6.1 源数据的提供 237

6.1.1 namevaluecollectionvalueprovider 238

6.1.2 dictionaryvalueprovider 246

6.1.3 valueproviderfactory 254

6.1.4 valueproviderfactories 255

6.2 modelbinder及其提供策略 259

6.2.1 modelbinder 259

6.2.2 modelbinderprovider 265

6.2.3 modelbinders 268

6.2.4 custommodelbinderattribute 271

6.2.5 针对参数的modelbinder是如何创建的 274

6.3 model绑定的实施 276

6.3.1 绑定上下文的初始化 277

6.3.2 绑定过程中对modelstate的设置 279

第7章 model的绑定(二) 283

7.1 绑定简单对象 284

7.1.1 利用valueprovider绑定简单对象 284

7.1.2 实例演示:利用mydefaultmodelbinder绑定简单类型参数(s701) 286

7.2 绑定复杂对象 289

7.2.1 复杂对象层次化结构 289

7.2.2 递归式绑定 291

7.2.3 实例演示:利用mydefaultmodelbinder绑定复杂类型参数(s702、s703) 294

7.3 绑定集合 297

7.3.1 针对同名数据项的集合绑定 297

7.3.2 针对索引的集合绑定 302

7.4 绑定字典 311

7.4.1 字典是一个复杂类型的集合 311

7.4.2 针对字典类型的model绑定策略 312

7.4.3 实例演示:利用mydefaultmodelbinder绑定字典类型参数(s707) 316

第8章 model的验证(一) 318

8.1 几种参数验证方式 319

8.1.1 modelerror 319

8.1.2 验证消息的呈现 320

8.1.3 手工验证绑定的参数 322

8.1.4 使用validationattribute特性 327

8.1.5 让数据类型实现ivalidatableobject接口 330

8.1.6 让数据类型实现idataerrorinfo接口 332

8.2 modelvalidator及其提供策略 334

8.2.1 modelvalidator与modelvalidatorprovider 334

8.2.2 dataannotationsmodelvalidator 337

8.2.3 validatableobjectadapter 337

8.2.4 dataerrorinfomodelvalidator 338

8.2.5 clientmodelvalidator 339

8.2.6 compositemodelvalidator 341

8.3 model验证的实施 345

8.3.1 model绑定过程中的验证 346

8.3.2 实例演示:模拟model绑定中的验证(s810) 347

8.3.3 针对“必需”数据成员的验证 351

第9章 model的验证(二) 354

9.1 validationattribute特性 355

9.1.1 数据是如何被验证的 356

9.1.2 几个常用的validationattribute 358

9.1.3 应用validationattribute特性的唯一性 360

9.2 dataannotationsmodelvalidator及其提供策略 364

9.2.1 “适配”型dataannotationsmodelvalidator 365

9.2.2 dataannotationsmodelvalidatorprovider 368

9.2.3 将validationattribute特性应用到参数上 375

9.2.4 一种model类型,多种验证规则 382

9.3 客户端验证 389

9.3.1 jquery验证 390

9.3.2 基于jquery的model验证 394

9.3.3 自定义验证 398

第10章 action方法的执行 402

10.1 异步action的定义 403

10.1.1 基于线程池的请求处理机制 403

10.1.2 两种异步action方法的定义 404

10.1.3 asyncmanager 406

10.2 各种同步与异步组件 412

10.2.1 mvchandler 412

10.2.2 controller 413

10.2.3 actioninvoker 414

10.2.4 controllerdescriptor 420

10.2.5 actiondescriptor 423

10.3 目标方法的执行 430

10.3.1 action方法并不以“反射”方式执行 430

10.3.2 实例演示:采用针对表达式树执行action方法(s1010) 432

第11章 view的呈现 437

11.1 actionresult 438

11.1.1 emptyresult 438

11.1.2 contentresult 439

11.1.3 fileresult 446

11.1.4 javascriptresult 451

11.1.5 jsonresult 455

11.1.6 httpstatuscoderesult 457

11.1.7 redirectresult/redirecttorouteresult 458

11.2 viewresult与viewengine 461

11.2.1 view引擎中的view 461

11.2.2 viewengine 463

11.2.3 viewresult的执行 465

11.3 razor引擎 474

11.3.1 view的编译原理 475

11.3.2 webviewpage与webviewpage[tmodel] 480

11.3.3 razorview 485

11.3.4 razorviewengine 495

第12章 过滤器 499

12.1 filter及其提供机制 500

12.1.1 filter与filterprovider 500

12.1.2 以特性方式注册过滤器 502

12.1.3 controller本身就是过滤器 504

12.1.4 过滤器的全局注册 504

12.1.5 实例演示:验证filter的提供机制和执行顺序(s1201,s1202,s1203) 506

12.2 authenticationfilter 511

12.2.1 authenticationfilter的执行流程 512

12.2.2 实例演示:通过自定义authenticationfilter实现basic认证(s1204) 513

12.3 authorizationfilter 518

12.3.1 authorizeattribute 518

12.3.2 requirehttpsattribute 520

12.3.3 validateinputattribute 520

12.3.4 validateantiforgerytokenattribute 523

12.3.5 childactiononlyattribute 527

12.4 actionfilter 528

12.4.1 actionfilter的执行流程 529

12.4.2 actionfilter对actionresult的设置 530

12.4.3 异常处理 532

12.5 exceptionfilter 534

12.5.1 handleerrorattribute 535

12.5.2 实例演示:利用自定义的exceptionfilter集成enterprise library进行异常处理(s1207, s1208, s1209) 537

12.6 resultfilter与overridefilter 551

12.6.1 resultfilter的执行流程 552

12.6.2 屏蔽外围过滤器 553

第13章 特性路由 556

13.1 特性路由注册 557

13.1.1 routeinfoprovider特性 557

13.1.2 基本路由映射 558

13.1.3 让路由模板能够尽可能反映资源的层次结构 559

13.1.4 为路由变量设置约束 560

13.1.5 缺省路由变量 561

13.1.6 设置模板前缀 562

13.1.7 设置area名称 563

13.2 约束表达式的解析 564

13.2.1 rangerouteconstraint 565

13.2.2 inlineconstraintresolver 566

13.2.3 自定义约束 570

13.3 route的创建 574

13.3.1 特性路由注册的route对象 574

13.3.2 route的生成机制 579

13.3.3 controller的激活与action方法的选择 579

第14章 案例实践 581

14.1 功能简介 582

14.1.1 商品列表的呈现 582

14.1.2 订购商品 584

14.1.3 登录与错误页面 585

14.2 设计概述 586

14.2.1 controller-service-repository 586

14.2.2 ioc的应用 591

14.2.3 aop的应用 594

14.2.4 异常处理 601

14.3 编程实现 602

14.3.1 数据表的创建 603

14.3.2 repository 604

14.3.3 service 609

14.3.4 路由注册和布局 612

14.3.5 productcontroller 616

14.3.6 ordercontroller 624

14.3.7 accountcontroller 630

附录a 实例列表 635

本图书信息来源:互动出版网

《ASP.NET MVC 5 框架揭秘》

时间: 2024-10-11 22:50:25

《ASP.NET MVC 5 框架揭秘》的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

Yii源码阅读笔记 - 日志组件

?使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category);Yii::trace($message, $category); 两者的区别在于后者依赖于应用开启调试模式,即定义常量YII_DEBUG: defined('YII_DEBUG') or define('YII_DEBUG', true); Yii::log方法的调用需要指定message的level和category.category是格式为“xxx.yyy.z

源码阅读笔记 - 1 MSVC2015中的std::sort

大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格式化,去掉或者展开用于条件编译或者debug检查的宏,依重要程度重新排序函数,但是不会改变命名方式(虽然MSVC的STL命名实在是我不能接受的那种),对于代码块的解释会在代码块前(上面)用注释标明. template<class _RanIt, class _Diff, class _Pr> in

CI框架源码阅读笔记5 基准测试 BenchMark.php

上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架. 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 按照惯例,在开始之前,我们贴上CI中不完全的核心组件图: 由于BenchMa

CI框架源码阅读笔记2 一切的入口 index.php

上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里这次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现. 1.       设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development可以是任何你喜欢的环境名称(比如dev,再如test),相对应的,你要在下面的switch case代码块中

Apache Storm源码阅读笔记

欢迎转载,转载请注明出处. 楔子 自从建了Spark交流的QQ群之后,热情加入的同学不少,大家不仅对Spark很热衷对于Storm也是充满好奇.大家都提到一个问题就是有关storm内部实现机理的资料比较少,理解起来非常费劲. 尽管自己也陆续对storm的源码走读发表了一些博文,当时写的时候比较匆忙,有时候衔接的不是太好,此番做了一些整理,主要是针对TridentTopology部分,修改过的内容采用pdf格式发布,方便打印. 文章中有些内容的理解得益于徐明明和fxjwind两位的指点,非常感谢.

CI框架源码阅读笔记4 引导文件CodeIgniter.php

到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.com/usr/reg 经过引导文件,实际上会交给Application中的UsrController控制器的reg方法去处理. 这之中,CodeIgniter.php做了哪些工作?我们一步步来看. 1.    导入预定义常量.框架环境初始化 之前的一篇博客(CI框架源码阅读笔记2 一切的入

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

dubbo源码阅读笔记--服务调用时序

上接dubbo源码阅读笔记--暴露服务时序,继续梳理服务调用时序,下图右面红线流程. 整理了调用时序图 分为3步,connect,decode,invoke. 连接 AllChannelHandler.connected(Channel) line: 38 HeartbeatHandler.connected(Channel) line: 47 MultiMessageHandler(AbstractChannelHandlerDelegate).connected(Channel) line: