WCFアプリケーションでは、Microsoftサンプルのほとんどに続くサブサブモデルを使用しています。Design Patterns: List-Based Publish-Subscribe。デュプレックスバインディングWCFアプリケーションでドロップされたクライアントを処理する
サービスでsubscribe()
とunsubscribe()
という概念が提供されていますが、クライアントが死んだ場合やチャネルに障害が発生した場合のクリーンアップを処理するベストプラクティスは何ですか?現在、私は現在InstanceContext
のClosed
とFaulted
イベント(サービス利用者PerSessionインスタンスコンテキストモードとnetTcpBinding)にハンドラに接続したときに、クライアントが加入:
_communicationObject = OperationContext.Current.InstanceContext;
_communicationObject.Closed += OnClientLost;
_communicationObject.Faulted += OnClientLost;
はOnClientLost
ハンドラは、単にしかし、クライアントをスクライブ解除します:
- クライアントがデュプレックス通信を切断したときのすべての状況を把握するのに適していますか?サービスは、クライアントと通信してクリーンアップを処理しようとした時点で発生した例外を処理するだけですか?
- クライアントのコールバックハンドラの登録を解除するだけでなく、特に障害が発生した場合にはさらにクリーンアップを行う必要がありますか?
This questionは、同様の質問を提起したが、最終的にサブスクライブおよび/またはそれらのイベントの処理
おかげ