应用程序对象笔记(选自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 中的事件机制,通过在处理过程中依次发出的多个事件,将这个处理过程分解为多个步骤,这个处理机制通常我们称为处理管道。

转载于:https://www.cnblogs.com/liaochifei/archive/2011/06/16/2082863.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值