首页 新闻 搜索 专区 学院

关于HttpAsyncHandler接口

0
悬赏园豆:40 [已解决问题] 解决于 2012-04-28 16:29

这个接口主要是干什么的, 查了下资料,还是比较抽象;到底是用提高http并发访问性能;还是在http请求的时候做一些不会阻塞当前请求的事情,并能推送到客户端

哈哈啊的主页 哈哈啊 | 初学一级 | 园豆:5
提问于:2012-04-28 14:43
< >
分享
最佳答案
0

试想这么一个场景:你有个普通的HttpHandler,在这个handler里你有某个操作是非常耗时的,比如生成一个很复杂的报表文件。当一个用户请求过来开始生成报表文件的过程中,这个用户是一直占用着一个IIS连接的(假设你的站点部署在IIS上),那么夸张点,同时有100个用户在生成这个报表,那么IIS的链接就被占用了100个,其他用户再访问站点就很有可能访问被拒绝掉(因为达到了连接上限)。而异步的hanlder则不同,你可以在进行这个复杂操作时,释放掉连接,用于响应其他用户的请求,在耗时操作完成后,再恢复之前的状态继续操作。这样可以比非异步的httphandler有更高性能的并发。这跟asp.net mvc async controller的实现原理/目的是一致的。更多细节你可以去msdn上查找。

收获园豆:25
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-04-28 14:55

谢谢,很清楚

哈哈啊 | 园豆:5 (初学一级) | 2012-04-28 16:27

我还向问下,如果我用这个做图片延迟加载,性能怎么样:一个页面有很多图片,或者需要处理,我先返回默认图片给浏览器,处理完了在返回给浏览器

哈哈啊 | 园豆:5 (初学一级) | 2012-04-28 16:38

@哈哈啊: “图片延迟加载”应该跟这个没关系。异步handler是用于那种“服务器端需要长时间操作”的场景。而你说的图片延迟加载,服务器端并没有做什么耗时操作。你这些图片应该都是静态的吧?不是服务器动态生成的吧。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-04-28 17:23
其他回答(2)
0

是HttpHandler接口的异步实现。

ASP.NET的Web请求交给HttpFactory(类名忘记了)后,会构建一个HttpHandler的对象,然后执行这个对象的一个方法(具体名字忘记了,接口是IHttpHandler),如果是网页请求的话,也就是一个Page对象。

HttpHandler是一个同步执行的行为,而HttpAsyncHandler则是异步的。

收获园豆:10
无之无 | 园豆:5085 (大侠五级) | 2012-04-28 14:47
0

HttpHandler 是對於文件 處理的,如*.aspx,那麼就調用*.aspx對應的HttpHandler。你可以設置很多這樣的映射。

收获园豆:5
無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-28 15:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册