大家在用HttpHandler的时候,一般都会有两个大的疑问(当然,前提是你有钻研精神的话,呵呵)
1. IsReusable到底什么意思?
老实说,这个属性很多人都感兴趣,但搞懂的人确实不多。MSDN中的介绍也是不知所以然。
获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例。该属性默认为false
我来这么说吧,首先我们为什么使用自定义的Handler呢?简单的说,我们是希望能接管掉某些请求, 对吧?最常见的应用如下
对图片进行处理。例如所有图片都输出一个水印。或者防止盗链到设计
添加一些特殊的扩展名。例如,我的网站能不能有一个后缀名为chenxizhang的网页呢?(这当然是一 个比喻,事实上一般没有必要这么做)
知道上述的需求之后,我们再来看一下后台的设计。HttpHandler其实就是实现了IHttpHandler接口的 一个类型,它要工作,就必须通过 ASP.NET所提供的一些所谓的Factory去创建实例,然后调用它的 ProcessRequest方法。其实就这么简单
因为创建对象实例在服务器肯定是需要占用资源的,那么我们就势必要考虑这些请求能不能在一定程 序上去复用。这就是IsReusable的初衷
事实上,我们对这种复用并不会陌生。平常我们就知道对象池和连接池的技术。Handler的Reuse也是 一个池的概念。
好了,说了这么一堆的概念,我们来讲一讲该属性设置为true和设置为false的区别。
设置为true,则通常情况下,就创建一次实例
设置为false,则每次请求都需要创建实例
时间: 2024-08-30 16:37:52