WCF Duplex netTcp Connections有时会挂起大约4秒钟

时间:2013-11-20 13:39:32

标签: wpf wcf tcp

使用带有netTcpBinding的WCF双工通道时,我有一种非常奇怪的行为。 WCF回调有时(每1到10分钟)挂起大约4-5秒,我不知道为什么。如果我使用NetNamedPipeBinding,则不会发生这种情况。

设置WCF服务:

  • WCF服务由WindowsService托管
  • 双工通道使用NetTcp Binding
  • 消息发送约。预先20秒,日期大小约为100 kB(我也尝试过它,消息大小为2 MB,看起来更常出现挂起)
  • 多个客户端可以连接到该服务。该服务标有属性[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
  • 为每个客户启动单独的thred以进行回调

AccessContract

  • 回调函数是void函数,并用属性[OperationContract(IsOneWay = true)]
  • 标记

设置WCF客户端

  • WPF申请
  • 在工作线程中打开频道(!=主线程) - >回调也在这个线程中调用
  • WCF客户端在与服务
  • 相同的计算机上运行

如果已完成以下分析

  • wcf服务跟踪日志:呼叫从服务发送到客户端,但在客户端5秒后执行
  • 如果多个客户端连接到该服务,则会更频繁地挂起(但主要只有一个客户端一次挂起)
  • 我已经检查了.NET GC是否在挂机期间忙 - >是负面
  • 我还检查过是否有其他网络流量 - >是负面

对我而言,它看起来像一个netTcp问题,但我不知道是什么原因以及如何分析它或避免问题。我不想使用管道,因为客户端也应该在其他机器上运行。

更新

如果WCF服务和客户端在同一台计算机上运行,​​我只能看到所描述的问题。如果客户端在另一台计算机上运行,​​一切正常(即使我在其他计算机上启动多个客户端)。

0 个答案:

没有答案