文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>说说ASP.NET MVC应用程序请求生命周期_.net教程网

说说ASP.NET MVC应用程序请求生命周期_.net教程网

时间:2010-08-30  来源:蔚蓝的大海

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

      和Http response 过程中,主要包含8个步骤:

         1)RouteTable(路由表)的创建

         2)UrlRoutingModule 请求拦截

         3)Routing engine 确定route

         4)route handler 创建相关的IHttpHandler实例

         5)IHttpHandler实例确定Controller(控制器)

         6)Controller执行

         7)一个视图引擎创建

         8) 视图呈现

         主要流程图如下:  

    1)RouteTable的创建

                     RouteTable的创建发生在mvc应用程序的启动 或者web应用程序池的重启!通常的asp.net程序,
      一个页面请求对应磁盘上的一个页面!如(http://localhost/index.aspx


                    对应到服务器磁盘上的文件index.aspx)index.aspx实际上是一个类,由IHttpHandler创建实例化。

     IHttpHandler包含一个

     ProcessRequest方法,负责响应页面输出!

    但是mvc application 是不同的,每一个请求映射到route,route 定义在route table,在应用程序启动时创建!

     RouteTable的在应用程序的具体使用如下
      public class MvcApplication :
        System.Web.HttpApplication
       { 
                 public static void RegisterRoutes(RouteCollection routes) 
       {  
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
        routes.MapRoute(    "Default",  // Route name    "{controller}/{action}/{id}",
        // URL with parameters    new { controller = "Home", action = "Index", id = "" } 
       // Parameter defaults    );  
        routes.MapRoute(   "Account",  // Route name   "{controller}/{action}/{id}",  
      // URL with parameters   new { controller = "Account", action = "LogOn", id = "" }
     // Parameter defaults   );    
       }   
        protected void Application_Start() 
       {   
            RegisterRoutes(RouteTable.Routes);  
        }   
        }
           2)UrlRoutingModule 请求拦截

                  每一个Http 请求 都被UrlRoutingModule拦截,UrlRoutingModule提供了当前的HttpContext的 

        routingengine(路由引擎)
                。HttpContext实例包含当前请求的所有数据。UrlRoutingModule控制着routing engine,


       提供了HttpContext数据到routing engine! UrlRoutingModule实现了IHttpModule接口,在web.config 文件进行

       了注册!

       UrlRoutingModule 具体的数据结构如下:

             public class UrlRoutingModule : IHttpModule 
                {    
                     // 主要的 Methods    
                   protected virtual void Init(HttpApplication application); 
                   private void OnApplicationPostMapRequestHandler(object sender, EventArgs e);  
                   private void OnApplicationPostResolveRequestCache(object sender, EventArgs e);  
                   public virtual void PostMapRequestHandler(HttpContextBase context); 
                   public virtual void PostResolveRequestCache(HttpContextBase context);
                   void IHttpModule.Init(HttpApplication application);   
                   // Properties     public RouteCollection RouteCollection { get; set; } 
               } 
               UrlRoutingModule 在WebConfig的注册   
              <httpModules> <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule,  

           System.Web.Routing, Version=3.5.0.0,  Culture=neutral,PublicKeyToken=31BF3856AD364E35"/>  
          </httpModules>


          3)Routing engine 确定route

            routing engine基于当前HttpContext确定Route的处理。routing engine 指出route table里面匹配的route ,并

           在 IRouteHandler实例创建route处理!


             4)route handler 创建相关的IHttpHandler实例在route table里,每一个route 都与一个IHttpHandler对应。
         IHttpHandler基于当前的HttpContext数据负责创建一个Controller(控制器)!IHttpHandler是由当前活动的

         IRouteHandler的GetHttpHandler所创建!


           具体的细节如下

          public interface IRouteHandler

               {

         // Methods  IHttpHandler GetHttpHandler(RequestContext    requestContext);

             }

          5)IHttpHandler实例确定Controller(控制器)

                在MVC应用程序中,MvcHandler实现了IHttpHandler,Controller实例,是基于所输入的HttpContext 

     和Url参数 与route 对应的,
          ControllerFactory 创建一个controller,ControllerContext包含上下文数据,传入到controller的Excute方法

    触发 controller的逻辑处理!


           MvcHandler主要有一个ControllerBuilder  _controllerBuilder字段;

        具体细节如下

              public class MvcHandler : IHttpAsyncHandler, IHttpHandler, IRequiresSessionState 
              { 
               // 主要的Fields  private ControllerBuilder _controllerBuilder; 
              }
              ControllerBuilder类主要有一个方法GetControllerFactory
             public class ControllerBuilder
            {  
            public IControllerFactory GetControllerFactory(); 
            } 
        通过实现IControllerFactory 工厂 创建一个Controller


             6)Controller执行

               所有的controller 逻辑调用执行时,actions请求被执行!当controller的逻辑被执行时,会返回一个

       ActionResult。
               一个ActionResult实例,会触发呈现一个View(视图),当触发发生时,一个视图引擎被创建,进行进一

      步的处   理


           7)一个视图引擎创建

        视图引擎实例会创建一个IView接口实例,返回一个ViewEngineResult实例,


             8) 视图呈现

        IView实例编译请求视图,提供Render方法调用的数据!

    
high definition multimedia interface specification version 1.3 aemachine t4697 motherboard replacement xpplaystation 3 forgot passwordmonitor lg flatron w1952tqlow budget traffic schoolcreative labs modemsatellite internet service providers my areatime warner cable billing los angelesprogram hitachi remote controlsed tvsuper nes power adapterdazzle capture card for ps3set up direct tvpanasonic mini dv software downloadverizon blackberry 8830 device softwaretime warner digital cable tivomultiple hdmi adapterpci comparedell 2001fp monitor driversync wii remote pcdvr dish networkpci to pcmcia adapterreinstall windows mobile 6comcast sports packageusb 2.0 sd mmc reader driverc2 tech hdmijabra bt150park tool pcs 10 reviewdigital cable box descramblerpropane quick connect adapter802.11 ssidac adapter techrepublicfirewire 800 cardbuspci wi fi cardmonitor airport extreme trafficbelkin vista migration cable forumsnintendo power adaptereureka vacuum filter replacementlead acid battery terminal voltagerose gold earringssabrent usb 2.0 to ide sata cabletime warner cable troubledual digital tuner cardconnect air springsnintendo wii composite cabledifference between radio waves light wavesslow cable internetwireless internet adapter ps2i2c serialcomponent rf adapterusb dictionarydynex 32 class 720p 60hz lcdcraftsman tool setswifi bluetooth cardcat 5 hurricane netlaptop hdtv tunerwindows mobile 6 backupsim card apipackard bell card reader driverdirectv best buypalm desktop hotsync cable downloadplaystation eye pc driverscable de red ps2razer deathadder mac reviewhp laptop backlight replacementjapanese games for ps2port usb wiiusb blaster driver downloadwireless gaming headset reviewsyahoo movie directorywifi versus bluetoothcomcast ipoatheros ar5007eg wireless network adapter driver xpmicrosoft keyboard problemsprinter adaptor cableverizon wireless mobile office softwarevista compatible pci modempc diagnostic software downloadplug external hard drive xbox 360dual sim card adapter suppliersps3 games for low pricesocom 5sim card recovery downloadcg814 netgearjewelry silveraircraft cable connectorsset up playstation networkdte serialrg6 vs rg6 quad shieldflat panel tv reviews802.11 g transfer ratenetwork connectivity toolsears free shipping codedownload sdhc card readermichael porter big ideasdvi i male to vga female adaptercheap flash drives usbwireless-g range expanderfirewire 800 9 6 adaptergeneric usb hub driver xp Replica lv Hangbags Replica Hangbags Hangbags replica handbags replica handbags replica handbags replica handbags usb cable usb cable usb cable usb cable
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载