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