2016-05-05 5 views
0

クライアントが接続を中断したときにWCFサーバーがどのような影響を及ぼすのか不思議です。たとえば、サーバーがリクエストを処理し続けることはわかっています。しかしその後はどうなるの?サーバーがクライアントに応答を送信しようとするとどうなりますか?クライアントが接続を中止したときのWCFサーバーの結果

  • サーバーは1回試行し、何度もやり取りするか試しますか?これは設定可能ですか?
  • サーバーはクライアントに応答をどのくらい送信しようとしますか?サーバーは何かが間違っていることを直ちに知っていますか、それとも決して受け取らないクライアントからの確認を待っていますか?これは設定可能ですか?
  • サーバーが最後に放棄すると、サーバーに例外がスローされますか?
  • 注意しておくと良い副作用はありますか?

私の場合、私はHTTPバインディングを使用しています。他のバインディングとは異なるのでしょうか?また、クライアントが接続を中止すると言うと、私はclient.Abort();のようなものについて話しています。クライアント接続が「異常に」中止された場合、何かが変更されますか?ネットワークケーブルをクライアントマシンから外しましたか?

答えて

0

ここでコールバック機能なしで話しているとします。 クライアントがサーバーから切断されても、サーバーに例外はありません。サーバーサービスがperclientモードで実行されている場合、サービスオブジェクトはすぐに破棄されません。 percallモードでは、IDisposableを実装して、呼び出しが終了した直後にオブジェクトが破棄されるときにすべてのリソースをクリアすることができます。 クライアントとサーバー間のチャネルが切断されるため、データをクライアントに送信しようとすると、サーバーに再試行メソッドがありません。

コールバックモードでは、クライアントチャネルがあり、クライアントが接続されているか、例外を介してチャネルを使用しようとしたかどうかを確認できます。障害の発生したチャネルで再度呼び出すことができるように、リストからチャネルを削除できます。

サービスがパーコールモードで実行されている場合は、サービスの別のインスタンスを作成するようにclient.abort()を呼び出さないでください。したがって、このモードでは役に立ちません。

関連する問題