使用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
可能无序吗?
我试图模拟这个但是无法重现它们出现故障的情况,但我之前发现了一个随机的应用程序错误,表明它可能已经发生。
直观地思考套接字如何工作我会说这是不可能的,但是看一下客户端消息回调会发现很多代码:
我知道消息是以正确的服务器端顺序发送的,我知道如果写入套接字,它们将以正确的顺序从客户端读取套接字 - 但是如红色箭头所示在异步套接字读取之后有很多WCF代码,我想知道如果从线路读取2条(或更多条)消息可能会导致应用级别的乱序消息。