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