ASP.NET生命周期的展示
對于ASP.NET頁面層開發無論是寫頁面還是寫控件,我覺得都可以用一句話描述:"Do the right thing at the right time in the right place."這是07年底的一篇東西,還是有點價值整理出來與大家共享。
本文從兩個粒度對ASP.NET生命周期做了展示,一是通過記錄頁面事件的觸發順序看請求的處理流程,一是通過Reflector看Page類內部對請求處理的實現,為了清晰我清理掉了ETW相關的代碼保留了一個簡化卻足可以說明問題的流程骨架;
本文覆蓋以下內容:
頁面事件的觸發順序展示 清理掉ETW代碼后的,Page類內部對請求處理的實現 MSDN關于ASP.NET生命周期非常重要的四個表格 演示源代碼下載
- usingSystem;
- usingSystem.Configuration;
- usingSystem.Data;
- usingSystem.Web;
- usingSystem.Web.Security;
- usingSystem.Web.UI;
- usingSystem.Web.UI.HtmlControls;
- usingSystem.Web.UI.WebControls;
- usingSystem.Web.UI.WebControls.WebParts;
- publicpartialclass_Default:System.Web.UI.Page
ASP.NET生命周期在設計的時候包含了很多可擴展點。我們可以自定義通過插入自定義類或覆蓋既有類來自定義框架的行為。下面是這些擴展點的概要:
路由對象:當我們創建路由表的時候,調用RouteCollection.Add()方法來增加新的路由對象。Add()方法接受了RouteBase對象。我們可以通過派生RouteBase基類來實現自己的路由對象。
MvcRouteHandler :當創建MVC應用程序的時候,我們把URL映射到MvcRouteHandler對象上。然而,我們可以把URL映射到實現IRouteHandler 接口的任何類上。路由類的構造函數接受任何實現IRouteHandler接口的對象。
【編輯推薦】