学习ASP.NET MVC5框架揭秘笔记
文章平均质量分 71
迷茫的寻路者
大学应届生
展开
-
学习ASP.NET MVC5框架揭秘笔记-IIS/ASP.NET管道(二)
IIS7.0与ASP.NETIIS7.0在请求的监听和分发机制上又进行了革新性的改进,主要体现在引入Window进程激活服务(Windows Process Activation Service,WAS)分流了原来(IIS6.0)W3SVC承载的部分功能。IIS6.0中W3SVC主要承载着如下三大功能。1.HTTP请求接收:接收HTTP.SYS监听到的HTTP请求。2.配置管理:从元数原创 2015-05-12 10:19:18 · 1022 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(四)
2.RouteData我们现在来看看用于封装路由数据同时作为GetRouteData方法返回值的RouteData。如下面代码片段所示,RouteData具有一个类型为RouteBase的属性Route,该属性返回生成此RouteData的Route对象。不过这是一个可读/写的属性,我们可以使用任意一个Route对象来对此属性进行赋值。public class RouteData{pu原创 2015-05-21 10:26:47 · 1081 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC是如何运行的(五)
完整的流程对于我们创建的这个迷你版的ASP.NET MVC框架来说,虽然很多细节被直接忽略掉,但是它基本上能够展现整个ASP.NET MVC框架的全貌,支持这个开发框架的核心对象可以说一个不少。接下来我们对通过这个模拟框架展现出来的ASP.NET MVC针对请求的处理流程作一个简单的概括。由于UrlRoutingModule这个HttpModule被注册到Web应用中,所以对于每个抵达的请原创 2015-05-17 14:52:46 · 950 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(十一)
3.对现有物理文件的路由在成功注册路由的情况下,如果我们按照传统的方式访问一个现存的物理文件,在请求地址满足某个Route的路由规则,ASP.NET是否还能正常实施路由呢?我们不妨通过实例来测试一下。为了让针对某个物理文件的访问地址也满足注册路由对象的路由模板采用的URL模式,我们需要按照如下的方式在进行路由注册时将表示约束的参数设置为Null。public class Global :原创 2015-05-28 09:23:20 · 1177 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(十二)
2.1.5根据路由规则生成URL前面已经提到过ASP.NET的路由系统主要有两个方面的应用,一个是通过注册路由模板与物理文件的映射实现请求URL和物理地址的分离,另一个则是通过注册的路由规则生成一个完整的URL,后者通过调用RouteCollection对象的GetVirtualPath方法来实现。如下面的代码片段所示,RouteCollection定义了两个GetVirtualPath方原创 2015-05-29 10:26:15 · 1162 阅读 · 1 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC路由(一)
2.2ASP.NET MVC路由ASP.NET的路由系统旨在通过注册路由模板与物理文件路径之间的映射进而实现请求地址与文件路径之间的分离,但对于ASP.NET MVC应用来说,请求的目标不再是一个具体的物理文件,而是定义在某个Controller类型中的Action方法。出于自身路由特点的需要,ASP.NET MVC对ASP.NET路由系统进行了相应的扩展。2.2.1路由映射通过前面的原创 2015-05-30 12:12:58 · 1445 阅读 · 3 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(一)
ASP.NET路由由于来自客户端的请求总是指向定义在某个Controller类型中的某个Action方法,并且目标Controller和Action的名称由请求URL决定,所以必须采用某种机制根据请求URL解析出目标Controller和Action的名称,我们将这种机制称为“路由(Routing)”但是路由系统并不是专属于ASP.NET MVC的,而是直接建立在ASP.NET上(实现实现路由原创 2015-05-18 14:39:43 · 1052 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC路由(二)
2.2.2 路由注册ASP.NET MVC通过调用代表全局路由表的RouteCollection对象的扩展方法MapRoute进行路由注册。我们来进行一个简单的实例演示。我们依然沿用之前关于获取天气信息的路由模板,看看通过这种方式注册的Route对象针对匹配的请求将返回怎样一个RouteData对象。我们创建一个空的ASP.NET Web程序,并手动添加“System.Web.Mvc.dl原创 2015-05-31 22:27:10 · 1013 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(五)
3VirtualPathDath介绍完GetRouteData方法的返回类型RouteData之后,我们接着介绍一下RouteBase的GetVirtualPath方法的返回类型VirtualPathData。当RouteBase的GetVirtualPath方法被执行的时候,如果定义在路由模板中的变量与指定变量列表相匹配,它会使用指定的路由变量值去替换路由模板中对应的占位符并生成一个虚拟路径原创 2015-05-22 19:53:43 · 1032 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC路由(四)
2.2.4基于Area的路由映射对于一个较大规模的Web应用,我们可以从功能上通过Area将其划分为较小的单元。每个Area相当于一个独立的子系统,它们具有一套包含Models、Views和Controller在内的目录结构和配置文件。一般来说,每个Area具有各自的路由规则(路由模板上一般会包含Area的名称),而基于Area的路由映射通过AreaRegistration类型进行注册。1原创 2015-06-02 16:15:55 · 1007 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC路由(三)
2.2.3缺省URL参数当通过VisualStudio的ASP.NET MVC项目模板创建一个Web应用后,它会为我们注册如下一个模板为“{controller}/{action}/{id}”的默认Route对象。3个路由模板均有相应额默认值。但是变量名为id的默认值为URLParameter.Optional。按照字面的意思,我们将其称为可缺省URL参数。那么将路由变量的默认值进行如此设置与原创 2015-06-01 22:21:14 · 867 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC路由(五)
2.AreaRegistration的缓存Area的注册(主要是基于Area的路由映射注册)通过具体的AreaRegistration来完成。在应用启动的时候,ASP.NET MVC会遍历通过调用BuildManager的静态方法GetReferencedAssemblies得到的程序集列表,并从中找到所有AreaRegistration类型。如果一个应用涉及太多的程序集,则这个过程可能会耗费原创 2015-06-24 16:25:36 · 934 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记目录
学习ASP.NET MVC框架揭秘笔记目录第一章 ASP.NET+MVC1.1传统的MVC模式持续更新中,,,,原创 2015-05-09 23:43:02 · 1472 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(二)
实例演示:通过路由实现请求地址与.aspx页面的映射我们创建一个简单的ASP.NET Web Forms应用,并采用一套独立于.aspx文件路径的URL来访问对应的Web页面,两者之间的映射通过路由来实现,我们依然沿用员工管理的场景。首先我们将员工的所有信息(ID、姓名、性别、出生日期和所在部门)定义在如下所示的Employee类型中,然后定义一个EmployeeRepository类型来原创 2015-05-19 15:30:46 · 713 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(六)
4.RouteRouteBase是一个抽象类,在ASP.NET路由系统的应用编程接口中,Route类型是其唯一的直接继承者,在默认的情况下调用RouteCollection的MapPageRoute方法在路由表中添加的就是这么一个对象。如下面的代码片段所示,Route类型具有一个字符串类型的属性Url,它代表绑定在路由对象上的路由模板。public class Route : RouteB原创 2015-05-24 09:47:48 · 1211 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(七)
5.RouteTable对于一个Web应用来说,访问所有页面采用的URL不可能具有相同的模式,与之匹配的Route自然也不可能是唯一的,一个Web应用通过RouteTable类型的静态只读属性Routes维护一个全局的路由表,如下面的代码片段所示,该属性返回一个RouteCollection对象。public class RouteTable{public RouteTable();原创 2015-05-24 18:01:16 · 851 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(八)
6.线程安全通过RouteTable的静态只读属性Routes表示的RouteCollection对象是针对整个应用的全局路由表。这个集合对象本身并不能提供线程安全的保证,所以同一个RouteCollection对象在多个线程中被同时操作就有可能造成意想不到的并发问题。为了解决这个问题,如下两个方法(GetReadLock和GetWriteLock)被定义在RouteCollection类型中原创 2015-05-25 11:10:10 · 834 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(十)
1.变量默认值由于我们为定义在URL模板中表示区号和天数的变量定义了默认值(areacode:010;days:2)如果希望返回返回北京未来两天的天气,可以直接访问应用根地址,也可以只指定具体区号,或者同时指定区号和天数。默认情况下RouteData的Route属性返回的正是一个Route类型的对象,RouteHandler属性返回的则是一个PageRouteHandler的对象。针对请求原创 2015-05-27 08:45:00 · 1094 阅读 · 1 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(三)
Route和RouteTableASP.NET路由系统的核心是注册的Route对象,一个Route对象对应着一个路由模板,多个具有不同URL模式的Route对象可以注册到同一个Web应用中,他们构成了一个路由表。这个包含所有注册Route对象的路由表通过RouteTable类的静态属性Routes表示,该属性返回一个RouteCollection对象。1.RouteBase我们所说的R原创 2015-05-20 10:12:58 · 1080 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-MVC的变体
1.2 MVC的变体 我们采用MVC模式将可视化UI元素的呈现、UI处理逻辑和业务逻辑分别定义在View、Controller和Model中,但是MVC并没有对三者之间的交互进行严格的限制。这主要体现在他允许View和Model绕开Controller进行直接的交互,不仅View可以通过Model获取需要呈现给用户的数据,Model也可以直接通知View原创 2015-05-10 18:18:24 · 637 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC是如何运行的(一)
ASP.NET MVC是如何运行的ASP.NET由于采用了管道式设计,所以具有很好的扩展性,整个ASP.NET MVC应用框架就是通过扩展ASP.NET实现的。通过上面对ASP.NET管道设计的介绍我们知道,ASP.NET 的扩展点主要体现在HttpModule和HttpHandler这两个核心组件之上,整个ASP.NET MVC框架就是通过自定义的HttpModule和HttpHandler原创 2015-05-13 16:42:34 · 1209 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-IIS/ASP.NET管道(一)
IIS/ASP.NET管道ASP.NET MVC就是建立在ASP.NET平台基础上基于MVC模式的Web应用框架,深入理解ASP.NET MVC的前提是对ASP.NET管道式设计有深刻的认识。由于ASP.NET Web应用大都寄宿于IIS上,接下来会介绍3个主要的IIS版本对各自Web请求的处理方式。1.3.1 IIS 5.x与ASP.NETIIS 5.x运行在进程InetInfo.e原创 2015-05-11 19:59:19 · 1280 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC与Model2
ASP.NET MVC与Model2ASP.NET MVC就是根据Model2模式设计的。对HTTP请求进行拦截以实现对目标Controller和Action名称的解析是通过一个自定义HttpModule来实现的,目标Controller的激活和Action方法的执行则通过一个自定义HttpHandler来完成。MVC的model主要体现为维持应用状态并提供业务功能的领域模型,或者是多原创 2015-05-10 18:17:15 · 574 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-MVP
1.2.1 MVP MVP是一种UI架构模式,适用于基于事件驱动的应用框架。MVP中的M和V分别对应MVC的Model和View,而P(Presenter)代替了Controller。 在MVP模式中,能够与Model直接进行交互的仅限于Presenter,View只能通过Presenter间接地调用Model。Model的原创 2015-05-10 18:12:13 · 1249 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-View和Presenter交互的规则(针对SC模式)
2. View和Presenter交互的规则(针对SC模式) View和Presenter之间的交互是整个MVP的核心,能否正确地应用MVP模式来架构我们的应用,主要取决于能否正确的处理View和Presenter两者之间的关系。在由Model、Presenter和View组成的三角关系中,核心元素不是View而是Presenter,Presenter不是View调原创 2015-05-10 18:03:32 · 1293 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-PV与SC
1. PV与SC解决View难以测试最好的办法就是让他无须测试。如果View不需要测试,其先决条件就是让它尽可能不涉及UI处理逻辑,这就是PV模式的目的所在。如果我们纯粹的采用PV模式来设计View意味着我们需要将View中的UI元素通过属性的形式暴露出来。具体来说,当我们为View定义接口的时候,需要定义基于UI元素的属原创 2015-05-10 17:59:28 · 1357 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-什么是MVC模式
1.1.2什么是MVC模式 MVC的创建者是Trygve M.H.Reenskau,他是挪威的计算机专家,同时也是奥斯陆大学的名誉教授。MVC是他在1979年提出的一种主要针对GUI应用的软件架构模式。 MVC体现了”关注点分离”这一基本的设计方针,他将一个人机交互应用设计的功能分为Model、Controller和View三部分,他们各自具有如下的职责。 1.Model是对原创 2015-05-09 23:39:59 · 1020 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-传统MVC模式
1.1传统MVC模式 对于大部分面向最终用户的应用来说,他们都需要具有一个与用户进行交互的可视化UI界面,我们将这个UI称为视图(View)。在早期,我们倾向于将所有与UI相关的操作糅合在一起,这些操作包括UI界面的呈现、用户交互操作的捕捉与响应、业务流程的执行及对数据的存取等,我们将这种设计模式称为自治视图(Autonomuous View , AV)。 1.1.原创 2015-05-09 23:33:02 · 1305 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-自治视图
1.1.1自治视图 一个典型的人机交互应用具有3个主要的关注点,既数据在可视化界面上的呈现、UI处理逻辑(用于处理用户交互式操作的逻辑)和业务逻辑。自治视图模式将三者混合在一起,势必会带来如下一些问题。 1.重用性。业务逻辑是与UI无关的,应该最大限度地被重用,但是若将业务逻辑定义在自治视图中相当于使他完全与视图本身绑定在一起。除此之外,如果我们能够将UI的行为抽象出来,基于抽原创 2015-05-09 23:34:17 · 1123 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC是如何运行的(三)
Controller的激活ASP.NET MVC的路由系统通过注册的路由表对当前HTTP请求实施路由解析,从而得到一个用于封装路由数据的RouteData对象,这个过程是通过自定义的UrlRoutingModule对HttpApplication的PostResolveRequestCache事件进行注册实现的。由于得到的RouteData对象中已经包含了目标Controller的名称,我们需原创 2015-05-15 10:46:42 · 1116 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-IIS/ASP.NET管道(三)
ASP.NET管道以IIS6.0为例,它在工作进程w3wp.exe中会利用aspnet_isapi.dll加载.NET运行时(如果.NET运行时尚未加载)。IIS6.0引入了应用程序进程池的概念,一个工作进程对应着一个应用程序池。一个应用程序进程池可以承载一个或者多个Web应用,每个Web应用映射到一个IIS虚拟目录。与IIS5.x一样,每一个Web应用运行在各自的应用程序域中。如果HTT原创 2015-05-13 10:47:11 · 1581 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-实例演示:SC模式的应用
实例演示:SC模式的应用 为了对SC模式下的MVP,尤其是该模式下的View和Presenter之间的交互方式有一个深刻的认识,我们现在来做一个实例演示。我们采用员工查询的场景,用ASP.NET Web Forms来建立这个简单的应用。 我们先来定义员工的数据类型,Employee来表示一个员工,有5个属性:ID、姓名、性别、出生日期和部门。public class Emplo原创 2015-05-10 18:07:24 · 1926 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC是如何运行的(二)
路由对于一个ASP.NET MVC应用来说,针对HTTP请求的处理实现在目标Controller类型的某个Action,每个HTTP请求不在像ASP.NET Web Forms应用一样是针对一个物理文件,而是针对某个Controller的某个Action方法。目标Controller和Action的名称由HTTP请求的URL来决定,当ASP.NET MVC接收到抵达的请求后,其首要任务就是通过原创 2015-05-14 15:06:15 · 939 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-Model2
Model2 Trygve M.H.Reenskau当初提出的MVC是作为桌面应用的架构模式。Web应用和桌面应用的主要区别在于用户是通过浏览器与应用进行交互,交互请求和响应是通过Http请求和响应来完成的。为了让MVC能够为Web应用提供原生的支持,Model2这种MVC变体被提出来。对于Web应用来说,和用户直接交互的UI界面界面由浏览器来呈现,用户交互请求通原创 2015-05-10 18:13:32 · 667 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC是如何运行的(四)
Action的执行作为Controller的基类ControllerBase,它的Execute方法主要作用在于执行目标Action方法。如果目标Action方法返回一个ActionResult对象,它还需要执行该对象来对当前请求予以响应。在ASP.NET MVC框架中,两者的执行是通过一个叫做ActionInvoker的对象来完成的。1.ActionInvoker我们同样为Actio原创 2015-05-16 21:16:05 · 1199 阅读 · 0 评论 -
学习ASP.NET MVC5框架揭秘笔记-ASP.NET路由(九)
2.1.4路由注册总的来说,我们可以通过RouteTable的静态属性Routes得到一个针对整个应用的全局路由表。通过上面的介绍我们知道这是一个RouteCollection对象,可以通过调用它的MapPageRoute方法注册某个物理文件的路径与某个路由模板的匹配关系。路由注册的核心在于根据提供的路由规则(路由模板、约束、默认值等)创建一个Route对象,并将其添加到这个全局路由表中。接下原创 2015-05-26 09:23:26 · 1242 阅读 · 1 评论