netTcp执行速度比basicHttp慢,这是正常的吗?

时间:2013-10-18 07:51:10

标签: c# .net wcf

考虑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连接是否正常是正常的?

1 个答案:

答案 0 :(得分:2)

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

另外,不要忘记tcp会话是reliable - 有一大堆WCF“kung-fu”涉及握手和安全性,以确保维持可靠的会话。您可以尝试关闭绑定的安全性,看看是否有任何明显的差异(不一定是建议!)。