应用程序对象笔记(选自Asp.net本质论)

HttpContext:

针对每一次请求,ASP.NET 将创建一个处理这次请求所使用的 HttpContext 对象实例,这个对象实例将用来在 ASP.NET 服务器的处理过程中传递所有需要的参数,在请求到达 ASP.NET 服务器之后,这个对象将被创建出来,在一次请求处理之后,这个对象将被丢弃掉。

由于在大多数的处理环节都需要用到这个对象,因此,HttpContext 类中还提供了一个名为 Current 的静态属性,以便于在处理过程中,不需要通过方法的参数而直接取得当前的上下文对象。当然,在没有请求的情况下,通过这个属性获得的结果将是 null。

HttpApplication:

当 HttpContext 对象创建之后,HttpRuntime 将随后创建一个用于处理请求的对象,这个对象的类型为 HttpApplication。

在 ASP.NET 内部,HttpRuntime 管理一个定义在 System.Web 命名空间下的 HttpApplicationFactory 类的实例,HttpApplicationFactory 通过工厂模式管理 HttpApplication 对象,在 HttpApplicationFactory 内部维护了一个 HttpApplication 对象池,使得被创建的 HttpApplication 对象可以被重复使用。但是,每一个 HttpApplication 对象每一次仅仅用于处理一个请求,这样,对于 ASP.NET 程序员来说,也就不需要考虑 HttpApplication 中多个请求并发的处理问题了。

在实际的请求处理过程中,我们还需要进行大量的工作,例如,检查当前的请求是由哪一个用户发起的,以此我们就可以针对不同的用户进行不同的处理;或者根据用户来决定是否对用户的请求进行处理,对于没有权限的用户返回一个缺少相应权限的回应等。如果我们在一个方法中来完成这些任务,显然会造成方法的过度臃肿。在 HttpApplication 中,利用 .NET 中的事件机制,通过在处理过程中依次发出的多个事件,将这个处理过程分解为多个步骤,这个处理机制通常我们称为处理管道。

你可能感兴趣的:(应用程序对象笔记(选自Asp.net本质论))