2010-10-28 85 views
4

我在使用WCF服务时遇到了性能问题。当一个wcf客户端连接到该服务时,为什么这么慢?

这里的故事:

  1. 我写的这是由一个控制台应用程序托管的自承载WCF服务;

  2. 我写了一个简单的客户端来使用服务;

  3. WCF服务运行后,客户端需要15秒以上才能创建与服务的连接。

WCF服务非常简单,就像“Hello World”一样。这是正常的吗?

+0

您是否在Internet信息服务中托管WCF服务? – 2010-10-28 08:29:28

+0

不,它由控制台应用程序托管 – Karla 2010-10-28 09:23:54

回答

0

这应有助于: http://msdn.microsoft.com/en-us/library/aa751883.aspx

如果你在IIS托管,需要一段时间来启动不管。

+0

我没有设计任何序列化/反序列化方法,只是从服务返回一个整数值。该服务托管在控制台应用程序中。 – Karla 2010-10-28 09:22:35

+0

WCF拥有自己的合约[de]序列化器 - 即使您只是发送基本数据类型。话虽如此,无论我尝试过什么,WCF的第一次创业一直在我的系统上缓慢。我使用IIS托管,因此只需关闭定期应用程序池循环。 – 2010-10-28 09:51:18

3

一种方法可能是添加自己的warmup脚本;在初始加载时调用您的服务的脚本。

虽然,this answer可能对您有所帮助,通常情况下,第一次访问服务速度较慢,但​​连续访问时间在一两秒钟内。

第一个慢响应与服务程序集的JIT编译有关;这意味着它的正常。

或者,您可能需要Profile您的应用程序。你也许想结账这段时间我写回的article

1

我们的经验相同,我发现客户端在实际打开TCP连接之前睡了14秒。

一个简单的调用

binding.UseDefaultWebProxy = false; 

解决了这个。

相关问题