是否可以使用 namedPipe 绑定通过 oneWay 调用来保证有序交付?
我有一个使用 namedPipe 绑定进行通信的 WCF 服务/客户端。客户端公开了一个回调合约,其中回调中的所有方法都标记为 OneWay。像这样的东西
[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 还具有一个名为ReliableSession的属性,该属性在 NetNamedPipeBinding 上不存在。所以我不确定可靠会话是否可以与 NetNamedPipeBinding 一起使用。
问题:
可靠会话是否适用于 namedPipeBinding?如果是,如何?如果没有,是否有任何其他方法可以保证订单交付?