看到好文章需要分享。 最近一直在學習ASP.NET MVC的生命周期,發現ASP.NET MVC是建立在ASP.NET Framework基礎之上的,所以原來對於ASP.NET WebForm中的很多處理流程,如管道事件等,對於ASP.NET MVC同樣適用。只是MVC URLRouting Mod
看到好文章需要分享。
最近一直在學習ASP.NET MVC的生命周期,發現ASP.NET MVC是建立在ASP.NET Framework基礎之上的,所以原來對於ASP.NET WebForm中的很多處理流程,如管道事件等,對於ASP.NET MVC同樣適用。只是MVC URLRouting Module對進入到server的request進行了攔截,然後對此次request的handler進行了特殊的處理。總結來說,就是ASP.NET管道是所有ASP.NET Web Applicaiton,包括WebForm, MVC,是這兩者的基礎,這兩者的不同,是在於最終使用的IHttpHandler的不同。WebForm中的使用的是Page這個Handler,MVC中使用的是MVCHander.
首先詳細瞭解一下ASP.NET的生命周期,下麵三張圖非常詳細,轉自用三張圖片詳解Asp.Net 全生命周期
說明:
1 第一張圖片從全局說明從客戶端發出一個Request請求,伺服器windows內核中的HTTP.SYS組件接收該請求開始到IIS處理完該請求並響應到客戶端結束。
2 第二張圖片為圖1中Http處理管線的詳細步驟
3 第三張圖片為圖2Http處理管線中調用處理程式(HttpHandler, 此處為Page對象)的詳細生命周期過程。
圖1:
圖2: Http處理管線詳解
圖3: Asp.Net生命周期詳解(WebForm的情況)
個人補充:這三張圖結合原來的一篇文章ASP.NET MVC 流程概述簡單的講一下MVC的攔截原理。 通過流程概述這篇文章中的代碼,並且結合本文中第一張圖分析,URLRouting Moudule在PostResolveRequestCache的時候對請求進行了攔截,並且進行相應的路由分析。PostMapRequestHandler的時候完成的是本次請求的Handler的創建。註意,這裡都是一些預處理,意識就是說,把以後真正要用到的Http Handler先放入到HttpContext中,此時並沒有調用ProcessRequest方法。PostMapRequestHandler完成後還要繼續其他的管道事件,如AquireRequestState等,真正執行Handler的Process Request方法是在PostRequestHandlerExecute. 最終會按照順序走完管道中的每一個事件。 轉自:http://blog.csdn.net/sundacheng1989/article/details/10468393