ASP.NET本质论
上QQ阅读APP看书,第一时间看更新

3.3.1 页面处理程序工厂

在ASP.NET的系统配置文件中,已经进行了如下的配置,可以看到,对于扩展名为aspx的请求,将由PageHandlerFactory这个处理程序工厂进行处理,代码如下:

<add path="*.aspx"
     verb="*"
     type="System.Web.UI.PageHandlerFactory"
     validate="True"/>

这个类定义在命名空间System.Web.UI下,具体的定义如下:

public class PageHandlerFactory :IHttpHandlerFactory

这是一个典型的处理程序工厂,用来返回一个实现IHttpHandler接口的处理程序对象实例。

PageHandlerFactory将寻找匹配请求名称的aspx文件,然后将这个模板文件进行解析,通过代码生成机制生成相应的页面类。这个页面类派生自Page类,Page类定义在命名空间System.Web.UI下,类的定义如下:

public class Page :TemplateControl, IHttpHandler

aspx模板文件与Page类和生成类之间的关系如图3-3所示。

图3-3 页面的生成关系

需要注意的是,aspx模板的解析和代码生成仅仅出现在第一次处理的时候,以后的请求将直接使用已经编译生成的程序集,所以,这个处理过程并不会降低网站的处理速度。