这个接口主要是干什么的, 查了下资料,还是比较抽象;到底是用提高http并发访问性能;还是在http请求的时候做一些不会阻塞当前请求的事情,并能推送到客户端
试想这么一个场景:你有个普通的HttpHandler,在这个handler里你有某个操作是非常耗时的,比如生成一个很复杂的报表文件。当一个用户请求过来开始生成报表文件的过程中,这个用户是一直占用着一个IIS连接的(假设你的站点部署在IIS上),那么夸张点,同时有100个用户在生成这个报表,那么IIS的链接就被占用了100个,其他用户再访问站点就很有可能访问被拒绝掉(因为达到了连接上限)。而异步的hanlder则不同,你可以在进行这个复杂操作时,释放掉连接,用于响应其他用户的请求,在耗时操作完成后,再恢复之前的状态继续操作。这样可以比非异步的httphandler有更高性能的并发。这跟asp.net mvc async controller的实现原理/目的是一致的。更多细节你可以去msdn上查找。
谢谢,很清楚
我还向问下,如果我用这个做图片延迟加载,性能怎么样:一个页面有很多图片,或者需要处理,我先返回默认图片给浏览器,处理完了在返回给浏览器
@哈哈啊: “图片延迟加载”应该跟这个没关系。异步handler是用于那种“服务器端需要长时间操作”的场景。而你说的图片延迟加载,服务器端并没有做什么耗时操作。你这些图片应该都是静态的吧?不是服务器动态生成的吧。
是HttpHandler接口的异步实现。
ASP.NET的Web请求交给HttpFactory(类名忘记了)后,会构建一个HttpHandler的对象,然后执行这个对象的一个方法(具体名字忘记了,接口是IHttpHandler),如果是网页请求的话,也就是一个Page对象。
HttpHandler是一个同步执行的行为,而HttpAsyncHandler则是异步的。
HttpHandler 是對於文件 處理的,如*.aspx,那麼就調用*.aspx對應的HttpHandler。你可以設置很多這樣的映射。