`
javahigh1
  • 浏览: 1225576 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

理解ASP.NET MVC执行过程

阅读更多

向基于ASP.NET MVC的Web程序发送请求首先传递一个 UrlRoutingModule 对象,这是一个HTTP模块。这个模块解析请求并执行路由选择。 UrlRoutingModule 对象选择第一个匹配当前请求的路由对象。(路由对象是实现 RouteBase 的类,而且通常是 Route 类的一个实例。) 如果没有任何路由匹配, UrlRoutingModule 对象就啥都不做,让请求回到通常的ASP.NET或IIS请求处理中。

由选择的 Route 对象, UrlRoutingModule 对象获取由Route 分隔的 IRouteHandler 对象。在MVC程序中这通常会是一个 MvcRouteHandler的实例。 IRouteHandler 实例创建一个 IHttpHandler 对象并将它传到IHttpContext 对象。默认情况下,用于MVC的 IHttpHandler 实例是 MvcHandler 对象。 MvcHandler 对象进而选择最终处理程序的控制器。

注意:
当ASP.NET MVC Web程序运行在 IIS 7.0下时, MVC项目不要求文件名扩展。然而,在 IIS 6.0下,需要映射.mvc文件名扩展到ASP.NET ISAPI DLL。


模块与处理程序是 ASP.NET MVC 框架的入口点。它们执行以下操作:

  • 在MVC Web程序中选择适合的控制器。
  • 获取指定的控制器实例。
  • 调用控制器的Execute 方法。


下表列出了MVC Web项目执行的阶段。

阶段 详细
接收程序的第一个请求

在Global.asax 文件中, Route 对象被添加到RouteTable 对象中。

执行路由(routing) UrlRoutingModule 模块使用RouteTable 集合中第一个匹配的 Route 对象来创建 RouteData 对象, 然后它创建一个 RequestContext (IHttpContext) 对象。
创建MVC请求处理程序 MvcRouteHandler 对象创建 MvcHandler 类的一个实例并传递 RequestContext 实例。
创建控制器 MvcHandler 对象使用 RequestContext 实例来识别 IControllerFactory 对象(通常是一个 DefaultControllerFactory 类的实例) 以创建控制器实例。
执行控制器 MvcHandler 实例调用控制器的 Execute 方法。
调用操作(action) 大多数控制器继承自 Controller 基类。因此,与控制分隔的 ControllerActionInvoker 对象决定调用哪个控制器的action方法并调用之。
执行结果 通常的action方法会接收用户输入,准备适当的响应数据,然后返回结果类型来执行结果。可以执行的内置类型包括: ViewResult (呈现视图,最常用的结果类型), RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, 和EmptyResult.
分享到:
评论

相关推荐

    ASP.NET MVC5 框架揭秘+源码打包下载

    相信精读本书的读者一定能够将ASP.NET MVC从接收请求到响应回复的整个流程了然于胸,对包括路由、Controller的激活、Model元数据的解析、Action方法的选择与执行、参数的绑定与验证、过滤器的执行以及View的呈现等...

    《ASP.NET MVC 5框架揭秘》高清带书签

    相信精读《ASP.NET MVC 5 框架揭秘》的读者一定能够将ASP.NET MVC从接收请求到响应回复的整个流程了然于胸,对包括路由、Controller的激活、Model元数据的解析、Action方法的选择与执行、参数的绑定与验证、过滤器的...

    ASP.NET MVC 5框架揭秘完整版 (蒋金楠) 高清pdf附源代码

    相信精读本书的读者一定能够将ASP.NET MVC从接收请求到响应回复的整个流程了然于胸,对包括路由、Controller的激活、Model元数据的解析、Action方法的选择与执行、参数的绑定与验证、过滤器的执行以及View的呈现等...

    ASP.NET MVC 3高级编程

    《asp.net mvc 3高级编程》 第1章 入门 1 1.1 asp.net mvc简介 1 1.1.1 asp.net mvc如何适应asp.net 1 1.1.2 mvc模式简介 2 1.1.3 mvc在web框架中的应用 2 1.1.4 asp.net mvc 3的发展历程 3 1.1.5 razor视图...

    ASP.NET MVC 5 框架揭秘

    相信精读《ASP.NET MVC 5 框架揭秘》的读者一定能够将ASP.NET MVC从接收请求到响应回复的整个流程了然于胸,对包括路由、Controller的激活、Model元数据的解析、Action方法的选择与执行、参数的绑定与验证、过滤器的...

    ASP.NET MVC 5 框架揭秘 108M

    相信精读《ASP.NET MVC 5 框架揭秘》的读者一定能够将ASP.NET MVC从接收请求到响应回复的整个流程了然于胸,对包括路由、Controller的激活、Model元数据的解析、Action方法的选择与执行、参数的绑定与验证、过滤器的...

    ASP.NET MVC5 框架揭秘

    相信精读本书的读者一定能够将ASP.NET MVC从接收请求到响应回复的整个流程了然于胸,对包括路由、Controller的激活、Model元数据的解析、Action方法的选择与执行、参数的绑定与验证、过滤器的执行以及View的呈现等...

    ASP.NET MVC 5 框架揭秘 [完整版] part3

    蒋金楠编*的《ASP.NET MVC5框架揭秘》以一个 模拟ASENET MVC内部运行机制的“迷你版MVC框架” 作为开篇,其目的在于将ASENET MVC真实架构的“全 景”勾勒出来。接下来本书以请求消息在ASENET MVC 框架内部的流向为...

    ASP.NET MVC 5 框架揭秘 [完整版] part2

    蒋金楠编*的《ASP.NET MVC5框架揭秘》以一个 模拟ASENET MVC内部运行机制的“迷你版MVC框架” 作为开篇,其目的在于将ASENET MVC真实架构的“全 景”勾勒出来。接下来本书以请求消息在ASENET MVC 框架内部的流向为...

    ASP.NET MVC 5 框架揭秘 [完整版] part1

    蒋金楠编*的《ASP.NET MVC5框架揭秘》以一个 模拟ASENET MVC内部运行机制的“迷你版MVC框架” 作为开篇,其目的在于将ASENET MVC真实架构的“全 景”勾勒出来。接下来本书以请求消息在ASENET MVC 框架内部的流向为...

    asp.net mvc core管道及拦截器的理解

     从上图可以抛光,asp.net core的执行顺序是,当收到一个请求后,request请求会先经过已注册的中间件,然后会进入到mvc的拦截器管道: 进入mvc管道后,根据以上顺序执行过滤校正。 OK,根据以上说明下面我们新建一...

    ASP.NET Web API 2框架揭秘

    虽然编程模式可以速成,但本书还是希望你能对ASP.NET或ASP.NETMVC有基本概念。 互联网应用尤其是移动互联网应用的普及,让采用Web直接通信的轻量级Web Service成为主流,本书要讲的正是ASP.NET Web API。它是一个...

    请求如何进入ASP.NET MVC框架

    熟悉asp.net的朋友都知道,asp.net请求实际都是交给HttpHandler处理(实现了IHttpHandler的类型)。无论是.aspx,.ashx,.asmx 还是MVC里的Action,请求都会交给HttpHandler。具体是在管道事件中,会根据请求创建一...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    11.1 理解ASP.NET缓存 11.2 输出缓存 11.2.1 声明性的输出缓存 11.2.2 缓存和查询字符串 11.2.3 使用特定查询字符串参数的缓存 11.2.4 自定义缓存控制 11.2.5 使用HttpCachePolicy类进行缓存 11.2.6...

    ASP.NET4高级程序设计(第4版) 3/3

    11.1 理解ASP.NET缓存 360 11.2 输出缓存 361 11.2.1 声明性的输出缓存 361 11.2.2 缓存和查询字符串 362 11.2.3 使用特定查询字符串参数的缓存 363 11.2.4 自定义缓存控制 364 11.2.5 使用...

    asp.net面试题

    15.asp.net如何实现MVC模式,举例说明! web/business/dataaccess ---------------------------------------------------------------------------------------------------------- 1.面向对象的思想主要包括什么...

    Multitenancy-Microservice-FederatedIdentity-Example:多租户联合身份示例ASP.NET MVC C#

    多租户和联合身份示例 存储库目标:补充有关多租户,微服务和联合身份的博客文章(请参见下文),并创建易于理解的有意义的代码存储库(如果仍然没有意义,请告诉我)。 请注意,该存储库当前尚不包含微服务示例,...

    C# Asp MVC 五层 .net 学生管理系统main.tar

    这套源码 适合毕业设计和课程设计,因为有足够的注释 ,所以理解简单。采用五层架构 ,符合高内聚,低耦合的设计规范。课程设计书里有 软件测试。 一.导入数据库 数据库文件一般在Data、DB或者App_Data文件夹内 有...

Global site tag (gtag.js) - Google Analytics