本文是根據網上的文章總結的。
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請求生命生命周期圖,供大家更好地理解:
可以關注本人的公眾號,多年經驗的原創文章共享給大家。