搜索
当前位置: 7303刘伯温开奖6374 > 调用 >

ASPX页Web服务调用性能优化(二)

gecimao 发表于 2019-05-31 18:00 | 查看: | 回复:

  以下代码片段显示了一个类似 Web 页面的代码,只不过现在进行的是异步 Web 服务调用。

  同样,该页面将创建一个 Web 服务代理,然后两次调用 Method1 Web 方法。不同的是,现在调用的是 BeginMethod1,而不是直接调用 Method1。BeginMethod1 调用将立即返回,这样我们就可以开始第二次调用该方法。与第一个示例中等待第一个 Web 服务调用完成不同,现在我们可以同时开始这两个调用。对 EndMethod1 的调用只是在特定的调用完成前会造成阻塞。

  值得注意的是,当我们从 ASPX 页面返回后,响应将发送给客户端。因此,在获得所需的数据之前,我们无法从 Page_Load 方法返回。这就是我们要阻塞 Web 服务调用直至其完成的原因。好的方面是两个调用可以同时执行,因此先前 6 秒钟的延迟现在将降到 3 秒钟左右。这虽然好一些,但仍然创建了阻塞的线程。我们真正需要的是在完成 Web 服务调用的同时,能够释放线程以便其处理 HTTP 请求。问题在于,ASPX 页面的处理模型没有一个异步执行模式。不过,确实提供了一个解决此问题的方法。

  ASP.NET 支持称为 HttpHandlers 的类。HttpHandlers 是实现 IHttpHandler 接口的类,用于为带有特定扩展名的文件的 HTTP 请求提供服务。例如,如果查看一下fig 文件,您将注意到,有许多 HttpHandlers 服务于带有扩展名(如 .asmx、.aspx、.ashx 甚至 .config)的文件的请求。对于带有特定扩展名的文件的请求,ASP.NET 将查看其配置信息,然后调用与其相关联的 HttpHandler 为该请求提供服务。

  关于此代码还有许多有趣的事情值得注意。首先,针对此虚拟目录处理的每个 HTTP 请求都将调用此代码。因此,我做的第一件事就是检查请求的实际路径,查看它是否是我要为其提供服务的页面的路径。

本文链接:http://olivierlutaud.net/diaoyong/488.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部