[翻译:ASP.NET MVC 教程]理解MVC应用程序的执行过程
2009-07-29 13:23
351 查看
(发送)请求至基于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 framework的进入点。它们完成下列的动作:
l 在MVC Web应用程序中,选择适合的控制器。
l 获取一个具体的控制器实例。
l 调用控制器的执行方法。
下列表格列出了一个MVC Web项目执行的阶段情况:
作者:Kinglee
文章出处:Kinglee’s Blog (http://www.cnblogs.com/Kinglee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
从被选择的Route对象的角度上来看,UrlRoutingModule对象获得了与Route对象相联系的IRouteHandler对象。典型的讲,在一个MVC应用程序中,这将是MvcRouteHandler的一个实例。IRouteHandler实例创建了一个IHttpHandler对象,然后将其传送至IHttpContext对象。默认情况下,针对MVC的IHttpHandler实例就是MvcHandler对象。MvcHandler对象之后将选择最终处理该请求的控制器。
上述模块及处理句柄是ASP.NET MVC framework的进入点。它们完成下列的动作:
l 在MVC Web应用程序中,选择适合的控制器。
l 获取一个具体的控制器实例。
l 调用控制器的执行方法。
下列表格列出了一个MVC Web项目执行的阶段情况:
阶段 | 详情 |
应用程序收到首次请求 | 在Global.asax文件中,Route对象被添加至RouteTable对象中。 |
执行路由 | UrlRoutingModule模块使用位于RouteTable集合中第一个匹配的Route对象来创建RouteData对象,该对象之后被用来创建RequestContext(IHttpContext)对象。 |
创建MVC请求处理句柄 | MvcRouteHandler对象创建了MvcHandler类的实例,然后将其传递给RequestContext实例。 |
创建控制器 | MvcHandler对象使用RequestContext实例来识别用来创建控制器实例的IControllerFactory对象(典型情况为DefaultControllerFactory类的一个实例)。 |
执行控制器 | MvcHandler实例调用控制器的执行方法。 |
实行动作 | 大多数控制器继承自Controller基类。因为控制器是这样做的,于是与控制器相关联的ControllerActionInvoker对象就决定了哪些控制器类的动作方法是应当调用的,然后再调用这些方法。 |
执行结果 | 一个典型的动作方法可能会收到用户输入、准备合适的回应数据以及之后通过返回结果类型来执行结果。嵌入的结果类型能够被执行,这些类型包括:ViewResult(呈现视图并且是最为常用的结构类型),RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, 和 EmptyResult。 |
文章出处:Kinglee’s Blog (http://www.cnblogs.com/Kinglee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
相关文章推荐
- ASP.NET MVC 教程 - 理解MVC应用程执行过程(C#)
- [翻译]ASP.NET MVC 教程 - 理解行为过滤器
- [翻译:ASP.NET MVC 教程]用ASP.NET MVC 创建一个电影数据库应用程序
- [翻译:ASP.NET MVC 教程]用ASP.NET MVC 创建一个电影数据库应用程序——补充
- 理解ASP.NET MVC执行过程
- ASP.NET MVC应用程序执行过程分析
- [翻译:ASP.NET MVC 教程]理解模型、视图和控制器
- 2.理解ASP.NET MVC的执行过程
- 请示asp.net mvc应用程序的执行过程
- 【EntityFramework系列教程七,翻译】为ASP.NET MVC中EntityFramework添加并发冲突处理机制
- 转发:ASP.NET MVC 4与Windows Azure 表、Blobs、队列的教程系列和示例应用程序
- ASP.NET MVC教程:理解模型、视图和控制器(4)
- 【EntityFramework系列教程六,翻译】在ASP.NET MVC程序中使用EntityFramework对相关数据进行更新
- 转发:ASP.NET MVC 4与Windows Azure 表、Blobs、队列的教程系列和示例应用程序
- 通过源码了解ASP.NET MVC 几种Filter的执行过程
- ASP.NET MVC教程:理解模型、视图和控制器(5)(完)
- [翻译]ASP.NET MVC 教程 - 传递数据到视图母版页(适合动态绑定菜单)
- [翻译:ASP.NET MVC 教程]创建路由约束
- [翻译:ASP.NET MVC 教程]ASP.NET MVC 视图概览
- 【EntityFramework系列教程五,翻译】在ASP.NET MVC程序中借助EntityFramework读取相关数据