Можно ли гарантировать заказанную доставку с помощью вызовов oneWay, используя привязку namedPipe?
У меня есть служба WCF / клиент, связывающаяся с использованием привязки namedPipe. Клиент предоставляет контракт обратного вызова, в котором все методы обратного вызова помечены как 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).
При поиске в интернете я обнаружил, что заказ не гарантируется при односторонней работе, как указано здесь , а также существует нечто, называемое reliableSession , которое обеспечивает порядок сообщений.
Все примеры в Интернете для надежного сеанса имеют привязку TCP (а не один с NamedPipeBinding), а tcpBinding также имеет свойство с именем ReliableSession , которого нет в NetNamedPipeBinding. Поэтому я не уверен, будет ли надежный сеанс работать с NetNamedPipeBinding или нет.
Вопрос:
Работает ли надежный сеанс с namedPipeBinding? Если да, то как? Если нет, есть ли другой способ, которым я могу гарантировать заказанную доставку?