我知道这个主题在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)看看是否有帮助。连接共享(虽然上面的绑定被禁用)可能是问题吗?其他人都在调查连接速度/延迟?
答案 0 :(得分:1)
您可以尝试代理池。 Here is a sample
如果您在IIS上托管服务,则必须启动nettcp端口共享服务。它允许您在多个wcf服务之间共享一个端口。我不认为这对打开频道的表现有任何影响