C# MVC 5 - 生命週期(應用程序生命週期&請求生命週期)

本文是根據網上的文章總結的。

 

1.介紹

本文討論ASP.Net MVC框架MVC的請求生命週期。

MVC有兩個生命週期,一爲應用程序生命週期,二爲請求生命週期。

 

2.應用程序生命週期

image

應用程序生命週期是指在申請過程實際開始運行IIS,直到它停止的時間。這是通過在應用程序中的啓動文件的應用程序開始和結束標記事件。

 

3.請求生命週期

發生每一HTTP請求是由我們的應用處理的時間的事件序列。

入口點爲每個MVC應用始終由ASP.NET收到請求後,計算出應該如何通過URL路由模塊來處理。

image

 

1)Routing 路由

ASP.NET MVC生命週期中第一個步驟就是路由,路由的過程是根據請求的Url和註冊好的路由規則進行匹配,當一旦找到一個與之匹配找路由規則時,ASP.NET MVC路由引擎就把這個請求交給相應的Handler處理。如果沒匹配,則返回404錯誤。

註冊路由,首先從Global.asax上面註冊:

image

然後我們看到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請求生命生命週期圖,供大家更好地理解:

image

 

可以關注本人的公衆號,多年經驗的原創文章共享給大家。

posted on 2017-01-05 16:23 alun-chen 閱讀( ...) 評論( ...) 編輯 收藏