Asp.net中的异步页面(2)
.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%
- 最新评论 查看所有评论
-
- 发表评论 查看所有评论
-
- GRIDVIEW排序 动态实现和静态实现
- ASP.NET2.0数据操作之创建数据访问层
- 单点登录的实现
- ASP.NET程序中常用代码汇总
- ASP.NET中实时图表的实现
- ASP.NET中利用Crystal Report创建图表
- ASP.NET 2.0中Gridview控件高级技巧
- VB中String的用法及原理
- ASP.NET 2.0轻松实现数据库应用开发
- ASP.NET AJAX入门系列(1):概述
- HijackThis使用详解
- 网友整理 .net 面试题(附答案)
- Visual Studio 2005中编译调试
- ASP.NET AJAX入门系列(2):使用ScriptManager控
- ASP.NET2.0中Gridview中数据操作技巧
2012 cheap ugg ugg uggs uggs ugg ugg uggs ugg ugg ugg uggs boots ugg ugg UGGS boots uggs boots. tory burch shoes tory burch outlet for sale.
- 详解ASP.NET MVC中属性标记的通用扩展方法
- 详解ASP.NET缓存的工作原理
- 如何将ViewState持久化
- C#实现前台与后台方法互调
- ASP.NET登陆控件membership的配置方法
- 体会ASP.NET异步处理请求的效果
- 正确使用异步操作
- 为ASP.NET MVC扩展异步Action功能(下)
- 使用ASP.NET MVC Futures 中的异步Action
- asp.net 在使用Response.Redirect try{}catch{}块
- 从零开始学习ASP.NET MVC(一) 开天辟地入门篇
- ASP.NET中URL Rewrite的实现方法
- ASP.NET AJAX框架调用后台代码的基本方法
- .Net中处理Word 2007文档的一种方法
- .net方法参数注释编写实例
