WCF 第四章 绑定 比较各种绑定的性能和可扩展性

开发人员需要知道绑定的性能和可扩展性特点。当你在与现实中的应用程序打交道时,性能和可扩展性对服务层次的协议和用户体验很重要。用户会对性能表现差的应用抱怨。应用通常不扩展意味着商业对象的需求没有被满足。
      我们已经对WCF中的四个绑定做了简单的性能比较。测试就是一个简单的返回一个256字符串的操作。列表4.23显示了用来在每个绑定间比较性能的服务。
列表4.23 性能测试服务
01public class PerformanceTestService : IPerformanceTestService
02 {
03     private static string String256;
04 
05     static PerformanceTestService()
06     {
07         String256 = "".PadRight(256, 'x');
08     }
09     public string Get256Bytes()
10     {
11         return String256;
12     }
13 }
      服务在四个不同的绑定上暴露出来: netNamedPipeBinding, netTcpBinding, wsHttpBinding和basicHttpBinding.一个测试客户端依次调用Get256Bytes操作50,000次来比较绑定间的不同。 然后我们测量平均使用时间,每秒多少次操作和CPU时间。所有的测试都在一个运行着服务端和客户端的单一工作环境中进行。这样以便于我们可以比较所有绑定 的性能。图片4.3显示了每个绑定的平均反应时间。你可以使用反馈时间管理来帮助检查用户体验。
     图片4.4显示了每个绑定每秒的平均操作数量。这个测量在吞吐量上有影响。在测试客户端仅有一个实例用来测试。如果使用多个客户端,那么就会实现额外的吞吐量。每秒有多少次操作是我们用来确定可扩展性的依据。
      可扩展性也应该考虑每次操作所使用的硬件资源。图片4.5尝试通 过显示每个操作的消耗来比较可扩展性。MCycles是一种基于对每个操作使用的CPU处理能力的测量方式。为了这个测试目的,我们使用一台Dell 4700, 奔腾4 3.4GHZ处理器的PC,等同于3400MCycles.注意对ws2007HttpBinding,wsHttpBinding和 basicHttpBinding绑定的测量相对netTcpBinding或者netNamedPipeBinding绑定有很高的消耗。这是因为需要 经常性的交互。
      WCF开发组已经发布了一个关于WCF性能的白皮书(http://msdn2.microsoft.com/en-us/library/bb310550.aspx ).这个白皮书探讨了更多安全设置,诸如事务,消息和混合模式,也对先前的技术比如.NET Remoting,Web Service Enhancements,ASP.NET Web Services和Enterprice Services进行了深入探讨。


=========

转载自

 

posted @ 2011-06-29 10:23  Gavin Liu  阅读(304)  评论(0编辑  收藏  举报

Right people get the right information at the right time.
以技术求生存,以市场求发展;学以至用,开拓创新;达技术之颠峰,至市场之广阔!