C# 使用单向调用的NetNamedPipeBinding的有序传递

C# 使用单向调用的NetNamedPipeBinding的有序传递,c#,wcf,netnamedpipebinding,C#,Wcf,Netnamedpipebinding,是否可以使用namedPipe绑定保证单向调用的有序传递 我有一个使用namedPipe绑定进行通信的WCF服务/客户端。客户端正在公开一个回调协定,其中回调中的所有方法都标记为单向。像这样的 [ServiceContract(CallbackContract = typeof(IMyServiceCallback))] public interface IMyService { [OperationContract] void MyOperation();

是否可以使用namedPipe绑定保证单向调用的有序传递

我有一个使用namedPipe绑定进行通信的WCF服务/客户端。客户端正在公开一个回调协定,其中回调中的所有方法都标记为单向。像这样的

[ServiceContract(CallbackContract = typeof(IMyServiceCallback))]  
public interface IMyService  
{  
    [OperationContract]  
    void MyOperation();  
}

public interface IMyServiceCallback  
{  
   [OperationContract(IsOneWay=true)]
   void MyCallback1();

   [OperationContract(IsOneWay=true)]
   void MyCallback2();  
}  
在服务器端,MyOperation方法的实现总是先调用MyCallback1,然后调用MyCallback2,但我注意到,有时客户机接收调用的顺序不正确(先调用MyCallback2,然后调用MyCallback1)

在互联网上搜索时,我发现,如前所述,单向操作不能保证订单,而且还有一种称为“确保消息顺序”的方法

internet上所有可靠会话的示例都使用TCP绑定(没有一个示例使用NamedPipeBinding),并且tcpBinding还有一个名为的属性,NetNamedPipeBinding上没有该属性。所以我不确定可靠的会话是否需要与NetNamedPipeBinding一起工作

问题:

可靠会话与namedPipeBinding一起工作吗?如果是,如何进行?如果没有,是否有其他方法可以保证订单交付?

基于Windows通信基础的可靠消息传递介绍

NetNamedPipeBinding位于Windows操作系统的支持之上,支持通过命名管道进行可靠的消息传递和可靠的流。由于命名管道是面向连接的,易于支持会话,设计上是可靠的,并且通常不桥接,因此在该绑定中不需要WS-RM支持

很有可能,您的消息是按照服务器发送的顺序发送的,而后者正是您需要处理的。服务器可能同时运行,并且不能保证有序调度

再说一次,我可能错了。从我上面的链接中,您的合同和实施中有一些控制订单交付的内容

还有更多信息。

基于Windows通信基础的可靠消息传递介绍

NetNamedPipeBinding位于Windows操作系统的支持之上,支持通过命名管道进行可靠的消息传递和可靠的流。由于命名管道是面向连接的,易于支持会话,设计上是可靠的,并且通常不桥接,因此在该绑定中不需要WS-RM支持

很有可能,您的消息是按照服务器发送的顺序发送的,而后者正是您需要处理的。服务器可能同时运行,并且不能保证有序调度

再说一次,我可能错了。从我上面的链接中,您的合同和实施中有一些控制订单交付的内容


还有一些详细信息。

命名管道传输提供了一个隐式会话,可以保证有序交付。正如所料,鉴于此,我已尝试重现您报告的行为,但失败。请发布代码摘录,显示如何调用服务和提供回调实例。另外,您确定MyOperation方法的实现总是先调用MyCallback1,然后调用MyCallback2(调用是否同步且在同一线程上?)吗?命名管道传输提供了一个隐式会话,保证了有序传递。正如所料,鉴于此,我已尝试重现您报告的行为,但失败。请发布代码摘录,显示如何调用服务和提供回调实例。另外,您是否确定MyOperation方法的实现总是先调用MyCallback1,然后调用MyCallback2(调用是否同步且在同一线程上?)