ASP.NET生命周期的展示


  本文标签: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生命周期非常重要的四个表格 演示源代码下载

  1. usingSystem;  
  2. usingSystem.Configuration;  
  3. usingSystem.Data;  
  4. usingSystem.Web;  
  5. usingSystem.Web.Security;  
  6. usingSystem.Web.UI;  
  7. usingSystem.Web.UI.HtmlControls;  
  8. usingSystem.Web.UI.WebControls;  
  9. usingSystem.Web.UI.WebControls.WebParts;  
  10.  
  11. publicpartialclass_Default:System.Web.UI.Page 

  ASP.NET生命周期在设计的时候包含了很多可扩展点  。我们可以自定义通过插入自定义类或覆盖既有类来自定义框架的行为  。下面是这些扩展点的概要:

  路由对象:当我们创建路由表的时候,调用RouteCollection.Add()方法来增加新的路由对象  。Add()方法接受了RouteBase对象  。我们可以通过派生RouteBase基类来实现自己的路由对象  。

  MvcRouteHandler :当创建MVC应用程序的时候,我们把URL映射到MvcRouteHandler对象上  。然而,我们可以把URL映射到实现IRouteHandler 接口的任何类上  。路由类的构造函数接受任何实现IRouteHandler接口的对象  。