慢(ish)WCF与netTcpBinding的连接速度

问题描述:

我知道这个问题已经提出了很多次在这里,但我找不到确切的答案,我正在寻找有关WCF的预期连接延迟。慢(ish)WCF与netTcpBinding的连接速度

基本上我有一个自我托管的WCF服务(服务器),它在工厂环境中进行报警处理。对于这些警报,延迟需要最小化,所以我正在研究连接时间。警报以不同的方式传递,其中一个是通过netTcpBinding WCF服务。另一个服务应用程序(客户端),它atm。运行在同一台服务器上的服务器正在使用服务器通过此绑定来传递警报,该绑定通常运行良好。

我的问题是来自客户端的初始连接延迟,因为IChannel.Open()调用需要100-500毫秒。平均约300毫秒。这在通过TCP/IP在同一台服务器上创建连接似乎非常高。 (使用原始插座进行快速测试,我可以获得〜1ms的连接速度。)

在客户端,我在启动时手动创建ChannelFactory,并在需要发送警报时将其重用到“channelFactory.CreateChannel()” 。在此之后,我明确地打开()IChannel,这是我担心的时候。该服务发送一批警报,然后IChannel关闭并处理。快速重新连接需要0毫秒,但通常在警报之间需要3-5分钟,并且在“长时间”暂停较慢后重新打开,因为我现在启用时没有安全等级,因此无法执行测试。

我绑定的配置是非常基本的:

<binding name="AlarmService_NetTcpBindingConfig" 
      hostNameComparisonMode="StrongWildcard" 
      closeTimeout="00:01:00" 
      portSharingEnabled="false" 
      listenBacklog="20" 
      maxConnections="50" 
      transactionFlow="false" 
      transferMode="Buffered" 
      > 
    <security mode="None"> 
     <message clientCredentialType="None" /> 
     <transport clientCredentialType="None" protectionLevel="None" /> 
    </security> 
    <reliableSession enabled="false" /> 
</binding> 

所以基本问题(除了自动售货机的挫折:)),如果是这样的连接等待时间,我可以通过WCF NetTcpBinding的期待?

我唯一能想到的,我还没有尝试过,是按照“配置Net.TCP端口共享服务”文章(http://msdn.microsoft.com/en-us/library /aa702669.aspx),看看是否有帮助。可以连接共享(虽然禁用绑定如上)是问题吗?任何人都在关注连接速度/延迟?

您可以尝试代理池。 Here is a sample

如果您在IIS上托管服务,则必须启动nettcp端口共享服务。它允许您在多个wcf服务*享一个端口。我认为它对打开通道的性能没有任何影响

+0

客户端只会打开单个连接,并且此连接在“很长”的时间段(通常为3-5分钟)处于空闲状态,所以我没有看看在这种情况下代理池是如何提供帮助的?底层的TCP/IP连接肯定会关闭。 (除了它看起来像我得到一个开放的连接,如果我在很短的时间内重新连接,因为这需要约0毫秒。)从我所做的研究,这是ChannelFactory应该需要“重要”的时间来创建,并且已被缓存。 – Reonekot 2012-01-30 08:32:19

+0

关于端口共享 - 我自己托管WCF服务,所以我不需要portharing。一些博客等已经表明它可以是一个表演。问题虽然,但100-500毫秒。似乎过度Id给你。这几乎是唯一的东西(通过编辑SMSvcHost.exe.config文件禁用它)我还没有尝试过,所以如果有人有这方面的经验,我想知道。 :) – Reonekot 2012-01-30 08:36:59