了解 MVC 应用程序执行过程
发送给基于 ASP.NET MVC 的 Web 应用程序的请求首先通过 UrlRoutingModule 对象(一个 HTTP 模块)进行传递。 此模块将分析请求并执行路由选择。 UrlRoutingModule 对象将选择与当前请求匹配的第一个路由对象。 (路由对象是实现 RouteBase 的类,并且通常是Route 类的实例。)如果任何路由都不匹配,则 UrlRoutingModule 对象不执行任何操作,并允许请求回退到常规的 ASP.NET 或 IIS 请求处理流程。
从选定的 Route 对象中,UrlRoutingModule 对象将获得一个对象,所获得的对象将实现IRouteHandler 接口并与 Route 对象关联。 通常,在 MVC 应用程序中,这将是MvcRouteHandler 类的一个实例。 MvcRouteHandler 实例将创建一个实现 IHttpHandler 接口的 MvcHandler 对象。 然后,MvcHandle 对象会选择将最终处理该请求的控制器。 有关更多信息,请参见 ASP.NET 路由。
注意 |
|---|
|
如果 ASP.NET MVC Web 应用程序运行在 IIS 7.0 中,则 MVC 项目不需要文件扩展名。 但是,在 IIS 6.0 中,处理程序要求将 .mvc 文件扩展名映射到 ASP.NET ISAPI DLL。 |
UrlRoutingModule 和 MvcRouteHandler 类是 ASP.NET MVC 框架的入口点。 它们执行下列操作:
选择 MVC Web 应用程序中合适的控制器。
获取特定的控制器实例。
调用该控制器的 Execute 方法。
下表列出了 MVC Web 项目的执行阶段。
|
阶段 |
详细信息 |
|---|---|
|
接收对应用程序的第一个请求 |
在 Global.asax 文件中,Route 对象将添加到 RouteTable 对象中。 |
|
执行路由 |
UrlRoutingModule 模块使用 RouteTable 集合中第一个匹配的 Route 对象来创建RouteData 对象,然后使用所创建的对象创建 RequestContext 对象。 |
|
创建 MVC 请求处理程序 |
MvcRouteHandler 对象将创建 MvcHandler 类的实例,并将 RequestContext 实例传递给处理程序。 |
|
创建控制器 |
MvcHandler 对象使用 RequestContext 实例标识用于创建控制器实例的IControllerFactory 对象(通常是 DefaultControllerFactory 类的实例)。 |
|
执行控制器 |
MvcHandler 实例调用控制器的 Execute 方法。 |
|
调用操作 |
对于从 ControllerBase 类继承的控制器,与该控制器关联的 ControllerActionInvoker 对象将决定要调用的 controller 类的操作方法,然后调用该方法。 |
|
执行结果 |
操作方法将接收用户输入,准备合适的响应数据,然后通过返回结果类型来执行结果。可执行的内置结果类型包括:ViewResult(呈现视图并且是最常用的结果类型)、RedirectToRouteResult、RedirectResult、ContentResult、JsonResult、FileResult和 EmptyResult。 |
转载:http://technet.microsoft.com/zh-cn/magazine/dd381612(VS.100).aspx
了解 MVC 应用程序执行过程的更多相关文章
- ASP.NET MVC应用程序执行过程分析
ASP.NET MVC应用程序执行过程分析 2009-08-14 17:57 朱先忠 朱先忠的博客 字号:T | T ASP.NET MVC框架提供了支持Visual Studio的工程模板.本文 ...
- Windows程序执行过程
Windows应用程序: WinMain函数(入口函数): 1. 设计窗体类,注冊窗体类.WNDCLASS 2. 创建窗体,显示及更新窗体. 3. 消息循环. 窗体过程函数(回调函数):WindowP ...
- MFC程序执行过程剖析
一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...
- MFC程序执行过程剖析(转)
一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...
- Java程序执行过程及内存机制
本讲将介绍Java代码是如何一步步运行起来的,其中涉及的编译器,类加载器,字节码校验器,解释器和JIT编译器在整个过程中是发挥着怎样的作用.此外还会介绍Java程序所占用的内存是被如何管理的:堆.栈和 ...
- Android入门学习:Android 系统框架及应用程序执行过程
Android基础知识学习 新手上路,还请多多帮助.由于初学,博客内容难免有不正确的地方,还请各位多多指教,相互学习! 主要内容: 1.Android层次架构及主要功能 2.Android编程模型,程 ...
- 通过DT10获取程序执行过程中的实时覆盖率
DT10是新一代的动态测试工具,可以长时间跟踪记录目标程序执行情况,获取目标程序动态执行数据,帮助进行难于重现的Bug错误分析,覆盖率检测,性能测试,变量跟踪等等功能. 系统测试覆盖率,通常是用于判断 ...
- php程序执行过程--非宏观和微观而是写的程序一行一行的路径----利用xdebug了解一段程序的执行过程----覆盖率
1.xdebug_start_code_coverage();//在需要开始跟踪程序执行路径时使用 2.var_dump(xdebug_get_code_coverage());//在结尾使用打印程序 ...
- 【JAVA】【基础知识】Java程序执行过程
1. Java程序制作过程 使用文本编辑器进行编辑 2. 编译源文件,生成class文件(字节码文件) javac源文件路径. 3.运行程序class文件.
随机推荐
- WEB开发人员必知的20+HTML5技巧(转)
互联网科技发展的速度真可谓惊人的快,一个稍不留神,你就可能无法跟上它的步伐. HTML5的变化和更新也压倒不少人,这篇文章将向大家介绍一些最基本也非常必要的 HTML技巧. 1. 新的文档类型(Doc ...
- hdu 1085
额 母函数 #include <cstdio> #include <cstring> int a[3],b[3]= {1,2,5}; int c1[10001],c2[1 ...
- Python天天美味(15) - Python正则表达式操作指南(re使用)(转)
http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...
- 如何提高多线程程序的cpu利用率
正如大家所知道的那样,多核多cpu越来越普遍了,而且编写多线程程序也是件很简单的事情.在Windows下面,调用CreateThread函数一次就能够以你想要的函数地址新建一个子线程运行.然后,事情确 ...
- HDU4602+推导公式
手动列出前5项 可发现规律 /* 推导公式 a[n] = 2^(n-1) + (n-2)*2^(n-3) */ #include<stdio.h> #include<math.h&g ...
- 借助CAD在Altium Designer中定义不规则PCB外形
借助绘图软件CAD在Altium Designer中定义不规则PCB外形. 工具/原料 CAD2007 Altium Designer2015 方法/步骤 借助CAD绘制的不规则外形,保存成DXF格式 ...
- Qt: 访问容器(三种方法,加上for循环就四种了)good
#include <iostream>#include <QString>#include <QList>#include <QListIterator> ...
- SQL盲注修订建议
一般有多种减轻威胁的技巧: [1] 策略:库或框架 使用不允许此弱点出现的经过审核的库或框架,或提供更容易避免此弱点的构造. [2] 策略:参数化 如果可用,使用自动实施数据和代码之间的分离的结构化机 ...
- Android tabhost下的activity怎样获取传来的值
android tabhost下的activity怎样获取传来的值,具体解决方案如下: 解决方案: 其他activity设置intent:Intent intent=new Intent(); int ...
- Xcode中的iOS工程模板
1. Application类型 我们大部分的开发工作都是从使用Application类型模板创建iOS程序开始的.该类型共包含7个模板,具体如下所示. Master-Detail Applicati ...
注意