返回顶部
首页 > 资讯 > 精选 >如何进行ASP.NET MVC应用程序执行过程的分析
  • 863
分享到

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

2023-06-17 23:06:06 863人浏览 八月长安
摘要

本篇文章给大家分享的是有关如何进行asp.net mvc应用程序执行过程的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。创建一个简单的ASP.NET MVC应用程序ASP.

本篇文章给大家分享的是有关如何进行asp.net mvc应用程序执行过程的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

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

ASP.net MVC框架提供了支持Visual Studio的工程模板,从而让你创建支持MVC模式的WEB应用程序。

这些MVC工程模板包括:

“ASP.NET MVC Web Application”模板

“ASP.NET MVC Web Application and Test”模板

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

默认情况下,当你使用“ASP.NET MVC Web Application and Test”模板创建一个新的Web应用程序时,Visual Studio将创建一个添加有两个工程的方案。***个工程是一个Web工程,你可以在其中实现你的应用程序。第二个工程是一个测试工程,你可以在此为你的MVC组件编写单元测试。

【注意】“ASP.NET MVC Web Application”模板基于“ASP.NET Web Application”模板。所以,在创建基于ASP.NET MVC框架的网站时,你需要从“File”菜单下选择“New Project”,然后选择一个新的ASP.NET MVC工程,而不是选择“New Website”。

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

Web应用程序的MVC工程架构

当你创建一个ASP.NET MVC应用程序工程时,诸MVC组件将基于如图1所示的工程文件夹加以分离:

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

图1—一个ASP.NET MVC应用程序的典型架构

Views文件夹。该Views文件夹是推荐的放置你的视图的位置。视图组件主要使用.aspx,.ascx和.master文件实现;此外,也有可能使用其他任何与视图有关联的文件。Views文件夹下针对每一个控制器都提供一个独立的文件夹,而且此文件夹以该控制器的名字为前缀命名。例如,如果你有一个名字为HomeController的控制器,那么你的Views文件夹下应该包含一个名字为Home的文件夹。默认情况下,当ASP.NET MVC框架加载一个视图时,它将首先在Views\controllerName文件夹下使用要求的视图名查找一个相应的.aspx文件。此外,还存在一个缺省名字为Common的文件夹,不过它没有对应任何控制器。你可以在这个位置放置母版页面,脚本,CSS文件,以及其它当生成视图时所使用的文件。

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

Models文件夹。该Models文件夹是推荐的放置你的MVC Web应用程序的模型的位置。典型情况下,这里会包括定义与数据存储进行交互的逻辑代码,还有对象定义等等。

App_Data。App_Data文件夹对应存储数据的物理位置。这个文件夹与在ASP.NET Web应用程序中的角色一样。

除了上面列举的文件夹外,一个MVC Web应用程序还使用下列一些重要的应用程序元素:

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

public class Global : System.Web.HttpApplication   {     protected void Application_Start(object sender, EventArgs e)     {       //注意:如果把下列表达改写成Url="{controller}.mvc/{action}/{id}"即可自动支持IIS6          RouteTable.Routes.Add(new Route       {         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应用程序执行过程的分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 如何进行ASP.NET MVC应用程序执行过程的分析

本文链接: https://lsjlt.com/news/294660.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何进行ASP.NET MVC应用程序执行过程的分析
    本篇文章给大家分享的是有关如何进行ASP.NET MVC应用程序执行过程的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。创建一个简单的ASP.NET MVC应用程序ASP....
    99+
    2023-06-17
  • 如何进行Jerry的spark演示应用程序分析
    如何进行Jerry的spark演示应用程序分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java应用程序入口:输入一个文本文件,这个Java应用会利用Spa...
    99+
    2023-06-02
  • 如何进行Python应用程序简析
    本篇文章为大家展示了如何进行Python应用程序简析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。最初设计Python应用程序的人并没有想到今天Python会在工业和科研上获得如此广泛的使用,这大大...
    99+
    2023-06-17
  • Python程序的执行过程
    原文出处:http://www.cnblogs.com/kym/archive/2012/05/14/2498728.html1、C++和C都是属于编译型语言,本来的.c文件都是用高级语言编写的,计算机是不能识别高级语言的,所以,必须要通过...
    99+
    2023-01-31
    过程 程序 Python
  • SpringBoot执行过程实例分析
    今天小编给大家分享一下SpringBoot执行过程实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。每个Spring B...
    99+
    2023-07-02
  • 如何进行spring-messaging远程代码执行漏洞分析
    这篇文章给大家介绍如何进行spring-messaging远程代码执行漏洞分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。0x00 漏洞概述2018年4月5日,Pivotal Spring官方发布安全公告,...
    99+
    2023-06-19
  • 如何理解PHP程序执行的过程原理
    目录概述加载php.ini配置加载php内置扩展概述 Web环境我们假设为Apache。在编译PHP的时候,为了能够让Apache支持PHP,我们会生成一个mod_php5.so的模...
    99+
    2024-04-02
  • 如何进行Drupal核心远程代码执行漏洞的分析
    今天就跟大家聊聊有关如何进行Drupal核心远程代码执行漏洞的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。0x01 漏洞概述Drupal是一款开源的内容管理系统,使用...
    99+
    2023-06-19
  • 如何通过Kubernetes网络策略进行应用程序微分段
    如何通过Kubernetes网络策略进行应用程序微分段,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在大多数生产环境中,需要实施网络访问控制。Kubernetes提供了一种...
    99+
    2023-06-03
  • 怎么进行Spark example的运行过程分析
    这篇文章将为大家详细讲解有关怎么进行Spark example的运行过程分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。pom.xml<project xmlns="htt...
    99+
    2023-06-03
  • 如何执行java程序
    首先我们在命令行运行Java程序需要借助jdk的环境依赖,打开jdk包,需要找到javac和java两个文件,如下图所示:接下来我们需要打开运行窗口,然后在运行窗口中输入cmd命令,如下图所示:在CMD命令行界面中我们输入cd命令进入到ja...
    99+
    2014-07-08
    java入门 执行 java 程序
  • 如何进行Spring MVC的解析
    这期内容当中小编将会给大家带来有关如何进行Spring MVC的解析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下Spring MVC的一些使用...
    99+
    2023-06-17
  • Python如何运行过程的分析
    这篇文章主要介绍了Python如何运行过程的分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
  • 如何进行CitizenMe的应用分析
    如何进行CitizenMe的应用分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。审核服务条款与性格测试第一个功能是跟踪记录用...
    99+
    2024-04-02
  • 如何进行AOP的应用分析
    这篇文章将为大家详细讲解有关如何进行AOP的应用分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。AOP(Aspect-Oriented Programming,面向切面的编程),它是可以通...
    99+
    2023-06-17
  • 学习MVC -第2部分:使用LINQ to SQL创建MVC应用程序和执行CRUD操作
    下载PDF_Article.zip - 5.4 MB 下载SqlScriptToCreateTable.zip - 659 B 下载SqlScriptToCreateDatabase.zip - 1,000 B 下载LearningMVC...
    99+
    2015-09-15
    学习MVC -第2部分:使用LINQ to SQL创建MVC应用程序和执行CRUD操作 数据库入门 数据库基础教程 数据库 mysql
  • Go中如何执行程序并返回父进程?
    偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Go中如何执行程序并返回父进程?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来...
    99+
    2024-04-05
  • Redis中命令执行过程的示例分析
    这篇文章将为大家详细讲解有关Redis中命令执行过程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Redis 是怎么执行远程客户端发来的命令的Redis cli...
    99+
    2024-04-02
  • 如何将应用程序进行Spring6迁移
    这篇文章主要介绍“如何将应用程序进行Spring6迁移”,在日常操作中,相信很多人在如何将应用程序进行Spring6迁移问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何将应用程序进行Spring6迁移”的疑...
    99+
    2023-07-05
  • 如何进行JMeter配置远程执行
    如何进行JMeter配置远程执行,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在对容器技术相关的各个组件进行压力测试时,我们选用JMeter作为压测工具,分别对...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作