《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 框架揭秘》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- Mysql学习笔记(八)索引
PS:把昨天的学习内容补上...发一下昨天学的东西....五月三日...继续学习数据库... 学习内容: 索引.... 索引的优点: 1.通过创建唯一索引,可以保证数据库每行数据的唯一性... 2.使 ...
- C# 只启动一个实例完全解决方案
工作上经常会遇到"程序只能启动一个实例"这样的需求. 我想,这样的需求应该很普遍,所以没打算去动脑筋,去找谷歌问下就得了,用下来发现,不是这里不爽就是那里不行. 先说下我详细的几点 ...
- Python 的字符串格式化和颜色控制
(部分内容源自武神博客和网络收集.) Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两 ...
- python编码问题的最终分析
python初学者,往往因为字符编码的问题而苦恼不已,本人也是阅读了大量的博客,再进行了一定的测试,基本搞清楚了编码问题的前因后果.下面一段代码是在python3.5上的,以它为例进行讲解(请忽略糟糕 ...
- 流行的ios开源项目
本文介绍一些流行的iOS的开源项目库 1.AFNetworking 更新频率高的轻量级的第三方网络库,基于NSURL和NSOperation,支持iOS和OSX.https://github.com/ ...
- .Net配置文件——反射+配置文件存储类型实例
配置文件+反射确实去除了选择语句的繁琐,带来了优美的赶脚! 首先改进了一下类(接上文): ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
- JS获取html对象的几种方式说明
document.getElementById("zx"); 通过ID获取html元素对象,ID号在html文档当中应该是唯一的.返回的是唯一element对象.并且所有浏览器都兼 ...
- Python基础:序列(字符串)
一.概述 字符串 类似于C中的字符数组(功能上更像C++中的string),它是由一个个 字符 组成的序列.与C/C++不同的是,Python中没有 字符 这个类型,而是用 长度为1的字符串 来表示字 ...
- sqlite3之基本操作(二)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.S ...
- galera cluster DDL节点间状态不一致的问题
近期某个系统中的galera cluseter环境发生A DDL操作后,B节点未同步的情况,同时B节点的errorlog中有如下警告信息: 2016-07-23 17:31:32 18920 [War ...