如何进行ASP.NET MVC应用程序执行过程的分析

技术如何进行ASP.NET MVC应用程序执行过程的分析本篇文章给大家分享的是有关如何进行ASP.NET MVC应用程序执行过程的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说

本文是关于如何分析MVC应用在ASP.NET的执行过程。边肖觉得很实用,所以分享给大家学习。希望你看完这篇文章能有所收获,就不多说了。让我们和边肖一起看看。

创建一个简单的ASP.NET MVC应用程序

ASP。NET MVC框架提供了支持Visual Studio的工程模板,这样就可以创建支持MVC模式的Web应用程序。

这些MVC工程模板包括:

“ASP。NET MVC网络应用程序”模板

“ASP。NET MVC网络应用与测试”模板

这些模板可以用来创建一个新的基于ASP.NET MVC框架的Web应用程序。在这些程序中,您可以使用文件夹、模板和配置文件来配置它们。

默认情况下,当您使用“ASP。NET MVC Web应用程序和测试”模板来创建一个新的Web应用程序,Visual Studio将创建一个添加了两个项目的解决方案。* * *项目是可以在其中实现应用程序的Web项目。第二个项目是测试项目,您可以在其中为您的MVC组件编写单元测试。

【注意】“ASP。NET MVC网络应用“模板是基于”ASP。NET网络应用程序”模板。因此,在创建基于ASP.NET MVC框架的网站时,需要从“文件”菜单中选择“新建项目”,然后选择一个新的ASP.NET MVC项目,而不是“新建网站”。

* * *,可以使用与兼容的任何单元测试框架。NET框架来测试ASP.NET MVC应用程序。请注意,Visual Studio 2008 Professional(和Team System)已经为MSTest测试工程提供了内置支持。

Web应用程序的MVC工程架构

当您创建一个ASP.NET MVC应用程序项目时,MVC组件将基于图1所示的项目文件夹进行分离:

如何进行ASP.NET  MVC应用程序执行过程的分析

图1——ASP中MVC应用程序的典型架构。网

视图文件夹视图文件夹是视图的推荐位置。组件主要由。aspx,ascx和。主文件。此外,还可以使用与视图关联的任何其他文件。“视图”文件夹下为每个控制器提供了一个单独的文件夹,该文件夹以控制器的名称作为前缀。例如,如果您有一个名为HomeController的控制器,那么您的“视图”文件夹应该包含一个名为Home的文件夹。默认情况下,当ASP.NET MVC框架加载一个视图时,它会首先找到一个对应的。视图\控制器名称文件夹中具有所需视图名称的. aspx文件。此外,还有一个默认名称为“通用”的文件夹,但它不对应任何控制器。您可以将生成视图时使用的母版页、脚本、CSS文件和其他文件放置在此位置。

控制器文件夹。控制器文件夹是放置控制器的推荐位置。

“模型”文件夹。“模型”文件夹是放置MVC网络应用程序模型的推荐位置。通常,这将包括定义与数据存储交互的逻辑代码,以及对象定义等等。

应用数据.App_Data文件夹对应于存储数据的物理位置。该文件夹与ASP.NET网络应用程序中的角色相同。

除了上面列出的文件夹,MVC网络应用程序还使用了以下重要的应用程序元素:

Global.asax和Global.asax.cs路由初始化是在文件Global.asax.cs的Application_Start方法中实现的下面的代码显示了一个典型的Global.asax文件,其中包括默认的路由逻辑。

public class global : system . web . httpapplication { protected void application _ start(对象发送方,eventargse){//注意:如果将以下表达式重写为URL=' {controller} '。MVC/{action}/{ID} ',IIS 6 route table . routes . add(new routenbs

p;      {         Url = "{controller}/{action}/{id}",         Defaults = new { action = "Index", id = (string)null },         RouteHandler = new MvcRouteHandler()       });          RouteTable.Routes.Add(new Route       {         Url = "Default.aspx",         Defaults = new { controller = "Home", action = "Index", id = (string)null },         RouteHandler = new MvcRouteHandler()       });     }   }

配置文件。MVC Web应用程序配置文件Web.config负责注册HTTP模块。在httpModules节中实现注册UrlRoutingModule类,这个类负责分析URL并且把请求路由到适当的处理器。注意,这个入口能够支持应用程序在同一个工程中宿主MVC与非MVC处理器。

下列代码展示了一个ASP.NET MVC应用程序的httpModules节的内容:

< httpModules>  < add name="UrlRoutingModule"    type="System.Web.Mvc.UrlRoutingModule,     System.Web.Extensions, Version=3.6.0.0, Culture=neutral,     PublicKeyToken=31BF3856AD364E35" /> < /httpModules>

当你在Visual Studio 2008 Professional(或Team System)选择一个ASP.NET MVC Web应用程序和测试工程模板时,方案中将自动包括一个测试工程。你可以使用MVC模板来创建测试以及内在接口的mock实现。

理解MVC工程的执行过程

一个发送到ASP.NET MVC的Web应用程序请求首先要传递到UrlRoutingModule对象(这是一个HTTP模块)。然后,UrlRoutingModule对象分析该请求并执行路由选择。值得注意的是,UrlRoutingModule将选择匹配当前请求的***个路由(Route)对象。

接下来,UrlRoutingModule对象从选择的路由对象中取得IHttpContext对象—由它进一步处理请求。默认情况下,这个IHttpContext就是MvcHandler对象。然后,MvcHandler对象进一步选择相应的控制器,最终由此控制器来处理该请求。

【注意】当一个ASP.NET MVC Web应用程序运行于IIS7环境下时,并不要求为MVC工程指定文件的扩展名。然而,在IIS6中,处理器要求你把.mvc文件扩展名映射到ASP.NET ISAPI中。

模块和处理器成为指向ASP.NET MVC框架的入口,并执行下列动作:

◆在一个MVC Web应用程序中选择适当的控制器

◆获取一个特定的控制器实例

◆调用该控制器的Execute方法

表格1更细致地描述了一个MVC Web工程的各个执行阶段。

表格1—MVC Web工程的各个执行阶段

阶段

详细描述

初始请求

Global.asax文件中,把路由添加到RouteTable对象。

路由

UrlRoutingModule模块根据RouteTable实例中匹配的Route对象创建RouteData对象。这些路由数据用于决定所请求的控制器及要调用的行为。

映射到控制器

MvcRouteHandler处理器负责根据RouteData实例中的数据创建控制器类型名。

调用控制器构建程序(controllerbuilder

处理器调用ControllerBuilder类的全局静态CreateController方法从而得到一个IController实例。如果没有返回一个IController实例,那么该处理器将返回一个HTTP 500错误指示出现了服务器错误。

创建控制器

ControllerBuilder实例直接创建一个新的控制器,或使用一个IControllerFactory对象来创建该控制器。

执行控制器

MvcHandler实例被添加到ControllerContext对象中并调用该控制器的Execute方法。

我们对微软推出的MVC(模型—视图—控制器)模式进行了理论的剖析,并把它与传统的ASP.NET Web表单模式和页面回寄方案进行了对比。在了解了MVC框架各组件主要功能之后,***我们对一个典型的MVC Web工程的各个执行阶段作了粗略的归纳。

需要注意的是,ASP.NET MVC模式是微软***推出的一种开发模式,目前***测试版本为Preview 2(Preview 3也即将问世)。因此,这一模式是否较之于ASP.NET Web表单模式更有利于提高软件的生产效率还有待于开发实践的检验。

以上就是如何进行ASP.NET MVC应用程序执行过程的分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/119734.html

(0)

相关推荐

  • centos8上安装mysql5.6

    技术centos8上安装mysql5.6 centos8上安装mysql5.61.下载5.6
    选择5.6.45,Red Hat Enterprise Linux,Linux 7https://dev.m

    礼包 2021年11月1日
  • OpenCV识别人脸的源码怎么编写

    技术OpenCV识别人脸的源码怎么编写这篇文章主要介绍“OpenCV识别人脸的源码怎么编写”,在日常操作中,相信很多人在OpenCV识别人脸的源码怎么编写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

    攻略 2021年11月29日
  • 荸荠怎么煮,荸荠要煮多久 煮荸荠的方法

    技术荸荠怎么煮,荸荠要煮多久 煮荸荠的方法荸荠既可以生吃荸荠怎么煮,也可以煮熟了吃,所以要看个人喜欢什么样的口感来确定煮的软脆。如果你喜欢脆脆的感觉,那么煮10几分钟就好了。如果喜欢软一点的,就要煮半小时以上了。 荸荠既

    生活 2021年10月25日
  • 赂秦而力亏破灭之道也翻译,文言文判断句有哪些句式

    技术赂秦而力亏破灭之道也翻译,文言文判断句有哪些句式判断句是文言文句式中一种常见的句式。在古汉语中赂秦而力亏破灭之道也翻译,用名词或名词性短语表示判断的句子,叫做判断句(现代汉语一般是在主语和谓语之间用“是”来表判断)。

    生活 2021年10月28日
  • 怎么用花呗转账,花呗中钱可以转到自己银行卡吗

    技术怎么用花呗转账,花呗中钱可以转到自己银行卡吗不可以,因为花呗里的额度属于消费额度,所以花呗既不能提现也不能转账怎么用花呗转账。因此花呗不能借钱,也无法转账到银行卡,如果你需要资金的话,可以去开通借呗。花呗是不能借钱的

    生活 2021年10月24日
  • ADO.NET中如何使用连接模式访问数据库中的数据

    技术ADO.NET中如何使用连接模式访问数据库中的数据本篇内容介绍了“ADO.NET中如何使用连接模式访问数据库中的数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处

    攻略 2021年12月3日