本文是根据网上的文章总结的。

1.介绍

本文讨论ASP.Net MVC框架MVC的请求生命周期。

MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期。

2.应用程序生命周期

应用程序生命周期是指在申请过程实际开始运行IIS,直到它停止的时间。这是通过在应用程序中的启动文件的应用程序开始和结束标记事件。

3.请求生命周期

发生每一HTTP请求是由我们的应用处理的时间的事件序列。

入口点为每个MVC应用始终由ASP.NET收到请求后,计算出应该如何通过URL路由模块来处理。

1)Routing 路由

ASP.NET MVC生命周期中第一个步骤就是路由,路由的过程是根据请求的Url和注册好的路由规则进行匹配,当一旦找到一个与之匹配找路由规则时,ASP.NET MVC路由引擎就把这个请求交给相应的Handler处理。如果没匹配,则返回404错误。

注册路由,首先从Global.asax上面注册:

然后我们看到RouteConfig.cs的配置:

   public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional }
);
}
}

2)Controller 控制器

Controller是MVC最核心的组件,他是连接View与Model的桥梁,在Controller内部会有相应的Action方法,可以决定请求返回的视图或数据。

3)Action Excution

一旦Controller被创建并初始化以后,里面的Action就开始上场了。这里ASP.NET MVC的框架的一个核心组件ActionInvoker就决定了请求到底是哪一个Action的方法。Action方法是真正接收请求的处理方法。

Action接收用户的输入,进行相应的逻辑处理并把要返回的数据Model准备好了之后传给相应的视图。

4)View Engine 视图引擎

Action方法的作用是接受输入,然后进行一定的处理并准备响应数据,最后返回一个View Result类型实例。返回的View Result类型这些类型:ViewResult, RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, FileResult, and EmptyResult等等。

当我们在Action方法的最后返回一个View Result的时候,ASP.NET MVC框架首先就会选择相应的视图引擎来返回视图。ASP.NET视图引擎都会实现接口IViewEngine。默认ASP.NET MVC框架为我们提供了接口IViewEngine两个实现,视图引擎WebForm和Razor。

View视图其实就是一个模板的作用,它是把Action传过来的数据绑定到视图文件中并显示到页面中。

另附上一个网上的MVC请求生命生命周期图,供大家更好地理解:

可以关注本人的公众号,多年经验的原创文章共享给大家。

C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)的更多相关文章

  1. 详解ASP.NET MVC应用程序请求生命周期

    ------转载当一个ASP.NET MVC应用程序提出请求,为了响应请求,包含一些请求执行流程步骤! 在ASP.NET MVC应用程序Http request 和Http response 过程中, ...

  2. 详解ASP.NET MVC的请求生命周期

    本文的目的旨在详细描述asp.net mvc请求从开始到结束的每一个过程. 我希望能理解在浏览器输入url并敲击回车来请求一个asp.net mvc网站的页面之后发生的任何事情. 为什么需要关心这些? ...

  3. ASP.NET MVC的请求生命周期

    我希望能理解在浏览器输入URL并敲击回车来请求一个ASP.NET MVC网站的页面之后发生的任何事情. 为什么需要关心这些?有两个原因.首先是因为ASP.NET MVC是一个扩展性非常强的框架.例如, ...

  4. asp.net应用程序生命周期和asp.net网页的生命周期

    一.asp.net应用程序生命周期 asp.net应用程序生命周期以浏览器向web服务器(比如IIS服务器)发送请求为起点,先后经历web服务器下的ISAPI(Internet Server Appl ...

  5. 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的生命周期和程序的生命周期

    [源码下载] 重新想象 Windows 8 Store Apps (70) - 其它: 文件压缩和解压缩, 与 Windows 商店相关的操作, app 与 web, 几个 Core 的应用, 页面的 ...

  6. Android应用程序中Activity的生命周期

    Android应用程序中Activity的生命周期 对于Android来说Activity的生命周期是非常的重要,尤其是对于新学者来说,只有充分了解了Activity的生命周期,才能写出优良用户体验的 ...

  7. 【微信小程序】App.js生命周期

    1.小程序的生命周期-App.js App() 必须在 app.js 中注册,且不能注册多个.所以App()方法在一个小程序中有且仅有一个. App({ onLaunch: function () { ...

  8. 【MVC】ASP.NET MVC 请求生命周期

    当一个asp.net mvc应用程序提出请求,为了响应请求,包含一些请求执行流程步骤! 在asp.net mvc应用程序Http request和Http response 过程中,主要包含8个步骤: ...

  9. Asp.NetMVC和WebForm的请求生命周期

    1.MVC的执行过程 用户  ---->控制器--->ViewData进行传值--->视图(进行显示) 2.Controller中的Action 主要进行的作用: 1.处理用户的请求 ...

随机推荐

  1. DailyTick 开发实录 —— 开始

    2009 年我读了李笑来老师的<把时间当朋友>,知识了柳比歇夫的时间记录法.当时激动坏了,马上动手实践起来.一开始的时候,是用一个小本子,走到哪儿都带着.完成一件事,就记录一下花费的时间. ...

  2. Hive安装配置指北(含Hive Metastore详解)

    个人主页: http://www.linbingdong.com 本文介绍Hive安装配置的整个过程,包括MySQL.Hive及Metastore的安装配置,并分析了Metastore三种配置方式的区 ...

  3. 谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  4. Xamarin+Prism开发详解二:Xaml文件如何简单绑定Resources资源文件内容

    我们知道在UWP里面有Resources文件xxx.resx,在Android里面有String.Xml文件等.那跨平台如何统一这些类别不一的资源文件以及Xaml设计文件如何绑定这些资源?应用支持多国 ...

  5. 记录一则Linux SSH的互信配置过程

    需求:四台Linux主机,IP地址为192.168.10.10/11/12/13,配置登录用户的互信 1.各节点ssh-keygen生成RSA密钥和公钥 ssh-keygen -q -t rsa -N ...

  6. ObserverPattern(观察者模式)

    import java.util.ArrayList; import java.util.List; /** * 观察者模式 * @author TMAC-J * 牵一发而动全身来形容观察者模式在合适 ...

  7. 如何通过Git GUI将自己本地的项目上传至Github

    最近在学习node.js和react,顺便复习了下AngluarJS相关的东西,写了些小demo想放在GitHub上,之前仅限于只申请了GitHub账号从没用过,今天花半天时间查资料认真学习Githu ...

  8. [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)

    数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...

  9. click事件的累加绑定,绑定一次点击事件,执行多次

    最近做项目为一个添加按钮绑定点击事件,很简单的一个事情,于是我按照通常做法找到元素,使用jquery的on()方法为元素绑定了点击事件,点击同时发送请求.完成后看效果,第一次点击没有问题.再一次点击后 ...

  10. 腾讯云 安装mono

    一.yum -y update 运行出现以下错误: http://centos.tencentyun.com/contrib/x86_64/repodata/filelists.xml.gz: [Er ...