zoukankan      html  css  js  c++  java
  • Asp.net生命周期

    MVC生命周期

     

    一、Routing--路由

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

    我们都知道在ASP.NET MVC程序的启动文件Global.asax中,我们要配置一些我们自己的路由规则到路由表中,以让客户端请求URL与进行路由规则匹配。

    二、MvcHandler--默认的Mvc处理组件

    MvcHandler是真正开始响应ASP.NET MVC请求的类,它是默认的ASP.NET MVC处理Handler,通过实现了接口IHttpHandler的方法ProcessRequest。代码如下:

    复制代码
    protected internal virtual void ProcessRequest(HttpContextBase httpContext)
    {
         SecurityUtil.ProcessInApplicationTrust(delegate {
             IController controller;
             IControllerFactory factory;
             this.ProcessRequestInit(httpContext, out controller, out factory);
             try
             {
                controller.Execute(this.RequestContext);
             }
             finally
             {
                factory.ReleaseController(controller);
             }
         });
    }
    复制代码

     从上面可以看到在ProcessRequest方法是真正响应请求,其内部通过初始化IController和IControllerFactor的实例,最后调用了controller的方法Exceute并把把请求上下文RequestContext作为参数传入进去进行相应的处理。

    复制代码
    protected internal virtual void ProcessRequest(HttpContextBase httpContext)
    {
         SecurityUtil.ProcessInApplicationTrust(delegate {
             IController controller;
             IControllerFactory factory;
             this.ProcessRequestInit(httpContext, out controller, out factory);
             try
             {
                controller.Execute(this.RequestContext);
             }
             finally
             {
                factory.ReleaseController(controller);
             }
         });
    }
    复制代码

    从上面可以看到在ProcessRequest方法是真正响应请求,其内部通过初始化IController和IControllerFactor的实例,最后调用了controller的方法Exceute并把把请求上下文RequestContext作为参数传入进去进行相应的处理。

    三、Controller--控制器

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

    我们从上面的代码可以看到MvcHandler内部调用方法ProcessRequestInit采用输出参数的形式返回一个IController和IControllerFactory的实例,如果成功就调用controller的Exceute方法。ControllerFactory顾名思义就是负责创建Controller实例并对其进行初始化。

    四、Action Execution--Action方法

    一旦Controller被创建并初始化后,里面的Action就开始上场了。这里ASP.NET MVC的框架的一个核心组件ActionInvoker就决定了请求到底是哪一个Action方法。Action方法是真正的接受请求的处理方法。Action接受用户的输入,进行相应的逻辑处理并把要返回数据Model准备好之后传给相应的视图。

    五、View Result--视图结果

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

    ViewResult, RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, FileResult, and EmptyResult等等。

    六、View Engine--视图引擎

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

    七、View--视图

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

  • 相关阅读:
    Thinkphp回顾(五)之前台模板中的基本语法
    Thinkphp回顾之(四)查询方法深入学习
    Thinkphp框架回顾(三)之怎么实现平常的sql操作数据库
    Thinkphp学习回顾(二)之config.php的配置
    Thinkphp学习回顾(一)之基本结构目录
    端口
    curl put delete post get请求类型参数
    xshell连接virtualbox下的linux系统
    实现jsonp的三种方式
    匹配汉字
  • 原文地址:https://www.cnblogs.com/zhangyuG/p/11299560.html
Copyright © 2011-2022 走看看