我爱Aspx >> C#.Net >> ASPX页Web服务调用性能优化_ASP.NET技巧这不仅仅是理论 -- 它确实起作用!
如果不考虑我没有阻塞了所有线程,至少也使得浪费的资源更少了,因而这还是有意义的。但实际的结果确实会有所不同吗?答案是肯定的“是”!我把此专栏中介绍的三种测试情况放在了一起:从 Web 页面代码进行 2 个阻塞的调用,从 Web 页面代码进行 2 个异步调用,以及从 PreRequestHandler 代码进行 2 个异步调用。我使用 Microsoft Application Center Test 对这三种情况进行了测试,在 60 秒钟内从 100 个虚拟客户端连续发送请求。下图显示的结果表明了在 60 秒钟内完成的请求数。

图 1:100 个同时进行请求的客户端在 60 秒钟内完成的请求
异步 PreRequestHandler 方法处理的请求数大约是排在第二位的方法处理的请求数的 8 倍。因此,该方法使您可以处理更多请求,但是对于单个请求,实际要多长时间才能完成呢?下图显示了这三种方法的平均响应时间。

图 2:100 个同时进行请求的客户端的平均完成响应时间
使用 PreRequestHandler 方法的平均请求响应时间仅为 3.2 秒。假设每个 Web 服务调用的内置延迟为 3 秒钟,则该方法是一种非常有效的解决办法。
我必须指出,这些并非科学的数字是在我的并非科学的办公室中运行的并非科学的计算机上获得的。当然,如果将空闲的线程释放出来,让它们做一些实际的工作确实会改善性能,因而这也很有意义。希望这些结果能够表明性能的改善其实是非常显著的。
PreRequestHandler 方法是很必要的,因为 .aspx 请求的处理程序中没有内置异步请求处理机制。但并非所有 ASP.NET HTTP 处理程序都是这样。PreRequestHandler 方法适用于所有 ASP.NET 请求类型,但使用将异步支持置于 .asmx 处理程序内的编程方式要比使用 PreRequestHandler 编程方式更容易一些。
小结无论何时遇到任何类型的进程耗时较长的性能问题,异步执行模型都是一个很好的方法。在从 .aspx 页面调用 Web 服务的情况下,我们认为可以将异步 Web 服务调用与 ASP.NET 提供的异步执行模式结合起来。这解决了在处理 .aspx 请求的过程中缺乏异步支持的问题。使用此异步方法可以消除性能问题以及线程池资源的消耗问题。
下载本文相关源代码
Ҷƪл˵?
微软建议的ASP性能优化28条守则_..[04-28]
用多活动结果集优化ADO.NET2.0数..[04-28]
Asp的安全管理(5)_ASP文摘[04-28]
Asp的安全管理(6)_ASP文摘[04-28]
Asp的安全管理(7)_ASP文摘[04-28]
Asp的安全管理(8)_ASP文摘[04-28]
Asp的安全管理(9)_ASP文摘[04-28]
Asp的安全管理(10)_ASP文摘[04-28]
Asp的安全管理(11)_ASP文摘[04-28]
Asp的安全管理(12)_ASP文摘[04-28]
SQL Server数据库性能的优化_数据..[04-28]
php代码优化及php相关问题总结_P..[04-28]
JSP/Servlet应用程序优化八法_JS..[04-28]
微软建议的ASP性能优化28条守则_..[04-28]
Windows 2000下优化Oracle9i性能..[04-28]
ORACLE优化器 _数据库技巧[04-28]
优化Oracle库表设计的若干方法_数..[04-28]
用多活动结果集优化ADO.NET2.0数..[04-28]
ORACLE SQL性能优化系列(一)_数..[04-28]
ORACLE SQL性能优化系列(二)_数..[04-28]