MVC应用程序的执行过程 - MVC中文说明书(2)

本文详细介绍了ASP.NET MVC应用程序的执行过程,包括URL路由、控制器选择、动作方法调用等关键步骤。揭示了从用户请求到响应生成的整个生命周期。

声明:

- 毕竟不是MS专业翻译,翻得不好不要打我

- 我翻译它的潜在目的在过程中学习,有加入自己的理解,一些正确但是太绕口的话我就略掉了

 

原文地址在:

http://quickstarts.asp.net/3-5-extensions/mvc/MvcUnderstandingAppExecution.aspx

 

 

MVC应用程序的执行过程

 

概要

当用户发出请求时,请求首先由UrlRoutingModule 对象处理,这个对象是一个HTTP模块(HTTP module)。这个对象在分析请求后,查找第一个与当前请求匹配的route对象(route object). route对象是实现了RouteBase的类,通常都是Route类的实例。

 

如果没找到任何吻合的route对象,UrlRoutingModule 就不再处理,而由ASP.NET的标准流程或IIS继续处理.

 

如果找到了一个Route对象,UrlRoutingModule会从Route对象中获取IRouteHandler对象实例。IRouteHandler 对象通常都是MvcRouteHandler的实例,它会创建IHttpHandler对象(默认情形下就是MvcHandler的实例),并传递给IHttpContext 对象。由MvcHandler的实例选择控制器,并最终让这个控制器处理请求。

 

注意:对于IIS6,要把.mvc文件扩展名映射到ASP.NET ISAPI DLL,IIS7则不用配置。

 

模块(module)和处理器(handler)是MVC框架的入口点,他们负责以下工作:

  • 从MVC Web应用程序这挑选恰当的控制器
  • 获取特定的控制器对象实例
  • 调用控制器的Execute方法

 

各执行阶段的具体情况如下表所示:

 
阶段:首次接收到对应用程序的请求
在Global.asax文件中,Route对象被加入到RouteTable集合。

 

阶段:route操作
UrlRoutingModule从RouteTable中查找首个匹配的Route对象,创建RouteData对象,用RouteData对象创建RequestContext对象。

 

阶段: 创建MVC请求处理器
MvcRouteHandler对象实例创建MvcHandler类的实例,然后向它传递RequestContext实例。

 

阶段:创建控制器
MvcHandler 通过RequestContext实例找到IControllerFactory 对象,用它来创建控制器对象实例。IControllerFactory 对象通常都是DefaultControllerFactiory的实例。
如果没有找到对应的控制器,将返回HTTP500错误。

 

阶段:执行控制器
MvcHandler调用控制器的Execute方法。

 

阶段:调用动作方法
多数控制器类都是从Controller 基类继承来的,凡是这类控制器,其内部的ControllerActionInvoker对象负责判断应该调用哪个动作方法,并由它来调用。

转载于:https://www.cnblogs.com/rogermeng/archive/2008/08/13/1266991.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值