2

メッセージを WCF サーバーに送信するプロキシがあるとします。

NetNamedPipeBinding b = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
b.MaxConnections = 1000000;
EndpointAddress address = new EndpointAddress(@"net.pipe://sendmessage");
channelFactory = new ChannelFactory<ISendMessage>(b, address);
proxy = channelFactory.CreateChannel();
proxy.SendMessage("Hello, world.");

SendMessage 関数に一方向の OperationContract があるとします。

[OperationContract(IsOneWay=true)]
void SendMessage(string message);

コード行を実行するproxy.SendMessage("Hello, world.");と、サーバーへのメッセージの配信が保証されますか? デフォルトではない場合、配信を保証する方法はありますか? アプリケーションがクラッシュし、実行直後にクラッシュしproxy.SendMessage("Hello, world.");たとします。ネットワークの不具合がないと仮定して、メッセージはサーバーに送信されますか?

4

1 に答える 1

1

一方向の操作により、リクエストがサービス側でキューに入れられます。リクエスト/リプライ操作との主な違いは、サーバーがメッセージを受け取った直後に、操作のディスパッチを待たずにクライアントがブロックを解除することです。したがって、操作の結果、スローされた例外、さらには操作が呼び出されたという事実を知る方法はありません。

ここで詳細を読むことができます http://msdn.microsoft.com/en-us/magazine/cc163537.aspx#S1

于 2013-11-08T22:34:47.477 に答える