replica watches | rolex replica | replica rolex | replica watches | christian louboutin shoes | replica watches | fake watches | replica watches

Asp.net中的异步页面(2)

来源: 未知   日期:2009-04-06  我要评论  胶粘剂 结构胶 硅胶 密封胶 中国胶粘剂网
.net下比较常用的异步处理场景: 1:filestream,即我们常说的i/o操作: 2:socket; 3:sqlcommand,例如:beginexecutereader、beginexecutenonquery。 4:webrequest,像抓取网页等操作; 5:webservcie的调用。 异

   .net下比较常用的异步处理场景:
   1:filestream,即我们常说的i/o操作:
   2:socket;
   3:sqlcommand,例如:beginexecutereader、beginexecutenonquery。
   4:webrequest,像抓取网页等操作;
   5:webservcie的调用。
  
   异步调用应该注意的地方:
  
   下面的程序也是合法的。这种方式虽然也是异步调用,但是和同步调用效果一样,因为endexecutereader方法会让当前线程挂起,直到返回结果。从性能角度和资源上讲,比直接用同步效果更差,因为系统要多启动一个线程。比较好的做法就是采用回调方式,具体做法可以参考上面的代码。
  
  cmd.beginexecutereader(commandbehavior.closeconnection);
  cmd.endexecutereader(risynresult);
  
  
   asp.net异步页面与ajax异步的效果区别:
  
   1:asp.net的异步页面让我第一想法是和ajax效果比较,ajax应用在比较费时的方法上,当数据加载时,在页面显示数据的区域先用一段提示文字,例如:数据正在加载中...之类的,无论这个方法多么费时,它只影响这一块的数据显示,页面其它区域不受影响(如果速度不慢的话)。而asp.net异步页面并不能达到这种效果,从上面的异步执行流程图可以看出,异步调用的事件发生在onprerendercomplete中,就是说在页面中生命周期之内,页面要想完全呈现给用户,必须等待异步方法返回结果。例如,一个费时的异步io方法,需要费时10s,那么用户要想看到页面,起码在10s以上。
  
   2:异步页面增加的是处理请求的数量,线程池线程得到了高效的使用,提高了可伸缩性,而ajax是在页面加载完成之后根据返回结果调用回调函数操作dom完成数据加载。
   异步任务:
  
   asp.net 2.0 中引入了另一个方法来简化异步操作: registerasynctask,比 addonprerendercompleteasync 具有以下优势。
   1:除了 begin 和 end 方法,registerasynctask 允许注册当异步操作长时间无法完成时调用的超时方法。设置 @ page 指令中 asynctimeout 属性设置超时。
   2:可以在一个请求中多次调用 registerasynctask 来注册若干异步操作。
   3:可以使用 registerasynctask 的第四个参数将状态传递给 begin 方法。这个参数一般设置为null。
  
    registerasynctask 的异步页与依赖于 addonprerendercompleteasync 的异步页相类似。需要将该页的 asyncmode 属性设置为 true,且与通过 prerender 事件执行,此时调用使用 registerasynctask 注册的 begin 方法,而不是addonprerendercompleteasync ,而且进一步保持请求处理直到最后一个操作完成。
  
   总结:
  
   正确的使用好asp.net中的异步页面在某些环境下能够使得应用程序性能得到优化。
顶一下
(0)
0%
踩一下
(0)
0%
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码: