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

时间:2012-01-28 10:15:34

标签: c# wcf

我知道这个主题在SO上提了很多次,但我找不到我正在寻找的关于WCF预期连接延迟的确切答案。

基本上我有一个自托管的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)看看是否有帮助。连接共享(虽然上面的绑定被禁用)可能是问题吗?其他人都在调查连接速度/延迟?

1 个答案:

答案 0 :(得分:1)

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

如果您在IIS上托管服务,则必须启动nettcp端口共享服务。它允许您在多个wcf服务之间共享一个端口。我不认为这对打开频道的表现有任何影响