通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 my小屋
联系我们
设为首页
加入收藏

 

qq,asp,php,jsp,xml,sql,.net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 网络赚钱 | 网站地图 | 广告服务 | 服务
当前位置:首页>>编程开发>>net专区>>正文 新版上线![旧版]
注:打开慢时请稍等

asp.net 2.0 中的异步页功能应用

http://www.iyit.net  日期:2006-5-13 14:29:23  来源:msdn  点击:
参加讨论 下载本文源代码:wickedcode0510.exe

  asp.net 2.0 提供了大量新功能,其中包括声明性数据绑定和母版页,成员和角色管理服务等。但我认为最棒的功能是异步页,接下来让我告诉您其中的原因。
  当 asp.net 接收针对页的请求时,它从线程池中提取一个线程并将请求分配给该线程。一个普通的(或同步的)页在该请求期间保留线程,从而防止该线程用于处理其他请求。如果一个同步请求成为 i/o 绑定(例如,如果它调用一个远程 web 服务或查询一个远程数据库,并等待调用返回),那么分配给该请求的线程在调用返回之前处于挂起状态。这影响了可伸缩性,原因是线程池的可用线程是有限的。如果所有请求处理线程全部阻塞以等待 i/o 操作完成,则其他请求排入队列等待线程释放。最好的情况是吞吐量减少,因为请求等待较长的时间才能得到处理。最坏的情况则是该队列填满,并且 asp.net 因 503“server unavailable”错误使后续请求失败。

  异步页为由 i/o 绑定的请求引起的问题提供优秀的解决方案。页处理从线程池线程开始,但是当一个异步 i/o 操作开始响应 asp.net 的信号之后,该线程返回线程池。当该操作完成时,asp.net 从线程池提取另一个线程,并完成该请求的处理。由于线程池线程得到了更高效的使用,因此提高了可伸缩性。那些挂起等待 i/o 完成的线程现在可用于服务其他请求。直接的受益方是不执行长时间 i/o 操作并因此可以快速进出管线的请求。长时间等待进入管线会对此类请求的性能带来不小的负面影响。

  asp.net 2.0 beta 2 异步页基础结构的相关文档很少。让我们展望一下异步页的前景,从而弥补这点不足。请记住,本专栏涉及 asp.net 2.0 和 .net framework 2.0 的测试版本。

  asp.net 1.x 中的异步页

  asp.net 1.x 本质上不支持异步页,但是通过坚韧的努力和不懈地创新可以生成异步页。有关更多概述信息,请参阅相关资料

  这里的技巧是,在一个页的代码隐藏类中实现 ihttpasynchandler,从而提示 asp.net 通过调用 ihttpasynchandler.beginprocessrequest 来处理请求,而不是通过调用该页的 ihttphandler.processrequest 方法。然后,您的 beginprocessrequest 实现可以启动另一个线程。该线程调用 base.processrequest,使得页进入其常规请求处理生命周期(完成诸如 load 和 render 的事件),但是在非 threadpool 线程上例外。同时,启动新线程之后 beginprocessrequest 立即返回,从而允许执行 beginprocessrequest 的线程返回线程池。

  这是基本思想,但细节中还有很多注意事项。其中,您需要实现 iasyncresult,并从 beginprocessrequest 中返回它。这通常意味着创建一个 manualresetevent 对象,并且当 processrequest 在后台线程中返回时向其发送信号。此外,您必须提供调用 base.processrequest 的线程。遗憾的是,多数用于将工作移到后台线程的常规技术(包括 thread.start、threadpool.queueuserworkitem 和异步委托)在 asp.net 应用程序中都是起反作用的,因为它们或者从线程池“偷盗”线程,或者有不受限制的线程增长的危险。正确的异步页实现使用自定义线程池,但自定义线程池类不容易编写。

  主要是在 asp.net 1.x 中生成异步页并非不可能,而是有些乏味。在尝试一、两次之后,您不禁会想一定会有更好的方法。目前,这个好方法就是 asp.net 2.0。

  asp.net 2.0 中的异步页

  asp.net 2.0 极大地简化了生成异步页的方式。首先使用该页的 @ page 指令引入 async=“true” 属性,如下所示:

  在后台,这会通知 asp.net 在该页中实现 ihttpasynchandler。接下来,您在该页生存期的早期(例如,在 page_load 时)调用新的 page.addonprerendercompleteasync 方法来注册一个 begin 方法和一个 end 方法,如以下代码所示:

本新闻共6页,当前在第1页  1  2  3  4  5  6  


编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:使用 asp.net 加密口令
下一篇:没有了
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
编辑web.config,保证asp.net的安全 iis服务、asp.net引擎以及sqlserver的安 让apache支持asp.net
在web service中使用asp.net状态保持(6 在web service中使用asp.net状态保持(5 在web service中使用asp.net状态保持(4
在web service中使用asp.net状态保持(3 在web service中使用asp.net状态保持(2 在web service中使用asp.net状态保持(1
用ie的web服务建立asp.net应用程序 dreamwavermx与asp.net(十一) dreamwavermx与asp.net(十)
dreamwavermx与asp.net(九) dreamwavermx与asp.net(八) dreamwavermx与asp.net(七)
dreamwavermx与asp.net(六) dreamwavermx与asp.net(五) dreamwavermx与asp.net(四)
dreamwavermx与asp.net(三) dreamwavermx与asp.net(二) dreamwavermx与asp.net(一)
dreamwavermx与asp.net(十九) dreamwavermx与asp.net(十八) dreamwavermx与asp.net(十七)
最新更新 热点排行 推荐新闻
asp.net 2.0 中的异步页功能应用
使用 asp.net 加密口令
如何使用asp+ 动态创建页面元素
如何在asp+ 中使用自定义的pagelet
asp.net 的菜单制作(asp.net 的菜单ap
asp.net 2.0 中的异步页功能应用
硬盘坏道修复及数据恢复宝典
免费登录搜索引擎入口大全
搜索引擎注册九大秘法
小心摄像头成为黑客偷窥你的眼睛
google要求改变ie主页
内存混插常见问题和解决方法
msn全国大面积瘫痪 业内疑为服务器故障
office2007简体中文版浮出水面 美图抢
解决暴风影音无法渲染此文件的难题
一个web文件上传的c#源代码
asp+ 操作cookie 方法大全
.net之asp web application快速入门(2
关于microsoft.net beta1与visual stu
asp.net导出数据到excel     
优秀公益广告作品欣赏(8)
java数据类型转换
新开放qq免费挂级网站
免费在qq上看在线电影电视听音乐
qq珊瑚虫外挂4.0版本发布!
免费把qq炫铃设为本机qq的系统提示音
windows xp专业版iis连接数的更改
web服务器配置全攻略(三)
优秀公益广告作品欣赏(7)
腾讯qq调整升级条件不再诱发网民“通宵
asp.net 2.0 中的异步页功能应用
asp.net 2.0 中的异步页功能应用
硬盘坏道修复及数据恢复宝典
免费登录搜索引擎入口大全
搜索引擎注册九大秘法
小心摄像头成为黑客偷窥你的眼睛
内存混插常见问题和解决方法
office2007简体中文版浮出水面 美图抢
0689版windows live messenger五大看点
比旧版看变化 qq2006beta2很不错
给msn messenger好友列表减肥
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights © 2004-2006 iyit.net all rights reserved.
网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息