資格情報に関する情報を取得するWCFサービスとクライアントの数があります。 私はこれらのクライアントのリストを監視し、(接続の切断やアプリケーションのクラッシュなどにより)クライアントの一部が突然死に至るかどうかを検出したいのですが。 これを行うにはどうすればよいですか?WCFでクライアント接続を確認する最も良い方法は何ですか
二重通信契約は最良の解決策ではないと理解しています。
資格情報に関する情報を取得するWCFサービスとクライアントの数があります。 私はこれらのクライアントのリストを監視し、(接続の切断やアプリケーションのクラッシュなどにより)クライアントの一部が突然死に至るかどうかを検出したいのですが。 これを行うにはどうすればよいですか?WCFでクライアント接続を確認する最も良い方法は何ですか
二重通信契約は最良の解決策ではないと理解しています。
これを行う1つの方法は、「ハートビート」を実装することです。これを行うには、クライアントのコレクションを保持します。クライアントに最小限の情報(ハートビートメッセージ)を含む簡単なメッセージを送信させます。
サーバ側では、定期的にクライアントのリストを調べて、「古くなった」ものがあるかどうかを確認する退去処理を実行します(つまり、しばらくの間ハートビートを受信していない)。
CommunicationExceptionを捕まえることとは別に、これを行うには本当に良い方法はありません。 イベントを見て、接続の状況を監視することもできます。
client.InnerChannel.Closed += OnChannelClosed;
client.InnerChannel.Opening += OnChannelOpening;
client.InnerChannel.Opened += OnChannelOpened;
client.InnerChannel.Closing += OnChannelClosing;
client.InnerChannel.Faulted += OnChannelFaulted;
client.InnerChannel.UnknownMessageReceived += OnChannelUnknownMessageReceived;
あなたはどのようにクライアントに接続していますか? WCFは、TCP、名前付きパイプ、...のように少し広範なものです。 最もスケーラブルなソリューションではありませんが、ポーリングは常に機能するはずです... – ChrFin