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傳過來的數據綁定到視圖文件中並顯示到頁面中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM