上图中,Application Domain是应用程序域,可以理解为应用程序的运行空间。ASP.NET ISAPI 将请求交给网站程序,网站程序通过调用HttpRuntime类中的静态方法处理请求。在处理过程中,他主要做了如下工作:1、将请求报文中发送过来的数 据进行保存,保存在HttpWorkRequest类的对象的相应属性当中;2、通过调用HttpApplicationFactory中的静态方法创建 HttpApplication对象,可以分析,倘若服务器每次都得为响应一个请求而创建一个HttpApplication对象的话,对服务器的压力将 会非常巨大。所以在ASP.NET中会有一个叫做HttpApplication pool的东西,当有请求发送过来时,HttpApplicationFactory类会在HttpApplication pool中搜寻已经清楚所有状态的HttpApplication 的对象来赋予数据,指导这次请求的程序运行。;3、创建HttpContext对象,此对象代表了页面的上下文,内部包含了处理请求的所有数据。值得一提 的是,在ASP.NET的一般处理程序的ProcessReques方法当中需要传入类型为HttpContext的对象作为参数,因此 HttpContext的创建应该在靠前。在HttpConcontext中封装有HttpResponse与HtttpRequest两个类的对象,其 中分别对应两个类的Form、QuerySring属性和Write属性用于获取请求中的数据和发送数据给客户端。Form属性用于获取Form表单中的 数据,QueryString用于获取Url当中的数据。
HttpApplication类的对象主要用于控制整个程序的执行,类中的ProcessRequest方法非常关键,在页面代码运行之 前,ProcessRequest方法会相继按顺序执行总共19个委托事件(也就是常说的管道),在其中第八个事件会创建被请求的页面类对象,在第十一至 第十二的事件期间会调用被请求页面类的ProcessRequest方法。
原文:http://www.cnblogs.com/proxyz/p/5246170.html