可以wcf netTcpBinding回调无序返回

时间:2016-09-15 02:34:08

标签: c# wcf tcp nettcpbinding

使用netTcpBinding

考虑最简单的客户端/服务器回调设置

服务器:

_callback.BeginReceive(message, EndCallbackClient, null);//send message to client

客户:

[CallbackBehavior(ConcurrencyMode = ConcurrencyMode.Single, UseSynchronizationContext=false)]
public class TradingClient : ITradingClientCallback, IDisposable
{
      public void Receive(Message message)
      {
            //handle message
      }

请注意,WCF配置中的<reliableSession ordered="true"/> 不是

例如,如果客户端冻结了一会儿并且从服务器发送了大量消息,客户端Receive可能无序吗?

我试图模拟这个但是无法重现它们出现故障的情况,但我之前发现了一个随机的应用程序错误,表明它可能已经发生。

直观地思考套接字如何工作我会说这是不可能的,但是看一下客户端消息回调会发现很多代码:

enter image description here

我知道消息是以正确的服务器端顺序发送的,我知道如果写入套接字,它们将以正确的顺序从客户端读取套接字 - 但是如红色箭头所示在异步套接字读取之后有很多WCF代码,我想知道如果从线路读取2条(或更多条)消息可能会导致应用级别的乱序消息。

0 个答案:

没有答案