1

考虑以下 WCF 服务的基本单元测试代码。

for (int i = 0; i < 10000; i++)
{                
  ServiceClient proxy = null;
  try
  {
    proxy = new ServiceClient("basicHttpService"); // or netTcpService
    Order[] orders = proxy.Find(Guid.Empty);
  }
  finally
  {
    if (proxy != null && proxy.State == CommunicationState.Opened)
      proxy.Close();
  }
}

我很惊讶 netTcp 端点需要 2.5 分钟进行 10k 次迭代,而 basicHttp 需要 23 秒。在整个循环期间保持连接打开使两个端点的性能大致相同。(约 20 秒)

与basicHttp相比,打开netTcp连接如此繁重是否正常?

4

1 回答 1

2

不知道传输对象的性质很难给出准确的答案,但我猜在这个例子中传递的数据量很小。在传递大量数据时,我已经看到从 http 迁移到 tcp 的性能显着提高。

另外,不要忘记 tcp 会话是可靠的 - 有一大堆 WCF“功夫”涉及握手和安全性,以确保保持可靠的会话。您可以尝试关闭绑定上的安全性,看看是否有任何明显的不同(不一定是推荐!)。

于 2013-10-18T09:02:39.733 回答