浅析ASP.NET异步页面
ASP.NET异步页面与ajax异步的效果区别:
1:ASP.NET的异步页面让我第一想法是和ajax效果比较,ajax应用在比较费时的方法上,当数据加载时,在页面显示数据的区域先用一段提示文字,例如:数据正在加载中...之类的,无论这个方法多么费时,它只影响这一块的数据显示,页面其它区域不受影响(如果速度不慢的话)。而ASP.NET异步页面并不能达到这种效果,从上面的异步执行流程图可以看出,异步调用的事件发生在onprerendercomplete中,就是说在页面中生命周期之内,页面要想完全呈现给用户,必须等待异步方法返回结果。例如,一个费时的异步io方法,需要费时10s,那么用户要想看到页面,起码在10s以上。
2:ASP.NET异步页面增加的是处理请求的数量,线程池线程得到了高效的使用,提高了可伸缩性,而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 ,而且进一步保持请求处理直到最后一个操作完成。