`
javahigh1
  • 浏览: 1266804 次
  • 性别: 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 mvc 示例项目

    在这个"asp.net mvc 示例项目"中,我们可以深入学习和理解ASP.NET MVC的核心概念和实践技巧。 首先,我们来探讨一下ASP.NET MVC的核心组成部分: 1. **模型(Model)**:模型是应用程序中的业务逻辑和数据处理部分...

    ASP.NET MVC5

    ASP.NET MVC5是一个基于微软.NET Framework的..."J.T.ASP.NET MVC 5.pdf"这个文件很可能是关于这一主题的详细教程,涵盖这些知识点,对于新手来说是一份宝贵的资源,可以帮助他们快速上手并深入理解ASP.NET MVC5框架。

    Pro ASP.NET MVC 5 (精通ASP.NET MVC5框架) 中文+英文+配套源代码

    "pro-asp.net-mvc-5" 包含的源代码可以帮助读者更好地理解和实践书中介绍的概念和技术。通过阅读和分析这些代码,你可以看到MVC模式在实际项目中的应用,了解如何组织模型、视图和控制器,以及如何配置路由规则,...

    基于ASP.NET MVC项目实例

    为了理解这个基于ASP.NET MVC的项目,你可以按照以下步骤进行学习: - **了解基本概念**:首先,你需要熟悉MVC模式的基本原理,以及ASP.NET MVC框架的关键组件。 - **安装环境**:确保你已安装了Visual Studio,并...

    ASP.NET MVC 项目集合.zip

    在这个"ASP.NET MVC 项目集合.zip"压缩包中,可能包含了多个ASP.NET MVC项目的源代码,这对于学习和理解ASP.NET MVC的开发实践非常有帮助。下面,我们将深入探讨ASP.NET MVC的关键概念和技术。 1. **模型(Model)*...

    asp.net MVC4.0安装包和中文包

    安装过程会自动添加必要的ASP.NET MVC4.0组件到Visual Studio中,使得开发者可以在IDE中直接创建和管理MVC项目。 在压缩包中,"MVC"可能是指包含ASP.NET MVC4.0的安装程序或者相关文件。通常,安装文件可能有...

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

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

    asp.Net mvc4 实例

    ASP.NET MVC4是一种基于Microsoft .NET Framework的轻量级、模型-视图-控制器(MVC)框架,用于构建可维护、高性能的Web应用程序。在VS2010集成开发环境中,结合SQL2008数据库,我们可以创建出功能丰富的Web应用。...

    ASP.NET MVC4 教程(完整版)

    这个教程的完整版涵盖了从基础到高级的ASP.NET MVC4开发知识,旨在帮助开发者深入理解和掌握该技术。下面将详细阐述ASP.NET MVC4的核心概念、特性以及实际应用中的关键知识点。 1. **模型-视图-控制器(MVC)架构**...

    Asp.net MVC 3实例学习之ExtShop系列最终源代码

    通过研究这个项目的源代码,我们可以深入理解MVC模式在实际项目中的应用,以及Asp.net MVC 3框架的内部工作原理。 1. **模型(Model)**:在MVC模式中,模型负责处理业务逻辑和数据管理。在ExtShop中,模型类通常与...

    ASP.NET MVC权限管理系统源代码

    ASP.NET MVC是一个强大的Web应用程序开发框架,由微软公司推出,...通过研究和理解这些源代码,开发者不仅能掌握ASP.NET MVC的基本用法,还能了解到如何结合EasyUI构建现代Web应用,以及如何实现复杂的权限控制机制。

    asp.net mvc demo

    总之,这个示例可能涵盖了ASP.NET MVC的基础架构、数据验证和性能优化等多个方面,对于学习和理解ASP.NET MVC框架的实践应用非常有帮助。通过深入研究这个demo,开发者可以更好地掌握如何在实际项目中高效地使用ASP...

    asp.net mvc5源码下载.rar

    ASP.NET MVC5是一个开源的Web应用程序框架,由微软开发,用于构建动态、数据驱动的Web应用。这个框架基于模型-视图-控制器(MVC)设计模式,它为开发者提供了强大的设计工具,使得构建可测试、可维护的Web应用变得...

    ASP.Net MVC4 安装文件

    ASP.NET MVC4(Model-View-Controller)是微软推出的一款用于构建动态网站的开源框架,它基于ASP.NET...对于初学者,建议深入学习MVC设计模式以及ASP.NET MVC4的每个组件,以便更好地理解和运用这个强大的开发工具。

    【Asp.Net MVC 入门Hello World】一步一步改写简单的登录注册(一)

    Asp.Net MVC 是微软开发的一款用于构建Web应用程序的框架,它基于Model-View-Controller (MVC)设计模式,提供了一种分离关注点的方式,使开发者可以更清晰地组织代码,提高可测试性和可维护性。在这个入门教程中,...

    ASP.NET MVC框架开发系列课程(1):MVC模式与ASP.NET MVC框架概述

    本课程将深入探讨MVC模式和ASP.NET MVC框架的基础知识,帮助开发者理解和掌握这一强大的Web开发工具。 **MVC模式** MVC模式是一种软件设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制...

    ASP.NET MVC4源码

    通过研究ASP.NET MVC4的源码,开发者可以深入理解框架内部的工作方式,解决开发过程中遇到的问题,更好地利用其功能,提高代码质量和开发效率。对于使用VS2012或VS2010的开发者,源码提供了一次难得的学习和调试机会...

    asp.net mvc 增删改查通过ado.net实现

    总的来说,通过ADO.NET在ASP.NET MVC中实现CRUD操作虽然比使用ORM工具更繁琐,但能让你更深入地理解数据访问层的工作原理,有助于在特定情况下优化性能或解决复杂的问题。此外,这个实例也展示了如何在MVC框架下组织...

    asp.net mvc使用LucenceNet

    ASP.NET MVC是一个强大的框架,用于构建可伸缩、高性能的Web应用程序。而Lucene.Net是Apache Lucene项目的一个.NET版本,是一个全文搜索引擎库,适用于多种.NET应用,包括ASP.NET MVC项目。本文将深入探讨如何在ASP...

Global site tag (gtag.js) - Google Analytics