同じサーバー上にWCFサービスが多数(〜15)あります。それらに接続するために、私たちはクラス(私はClientConnection
と名付けました)を持っています。このクラスは、クライアント側のすべての異なるサービスを1つの特定のサーバーに管理します。WCFの接続損失を処理するために採用する戦略
このクラスは、要求された(およびキャッシュされた)すべてのサービスのチャネル(およびそのバインディング)を作成します。
接続が壊れた場合(1台のスイッチがダウンしていたとします)、1台のサーバーが応答するのに忙しいと思われる場合は、代替戦略が必要です。
これは、破損したことを検出して接続を復元しようとすることを意味します。
現在、私はこのクラスの中で、リモートサービスに到達できることを確認する「ウォッチドッグ」を持っています。そうでなければ、イベントを発生させます。
このイベントを受け取ったら、どうすればよいですか?チャンネルをリフレッシュしますか?それを廃棄して新しいものを作成しますか?また、同じサーバーに10〜15のアクティブなサービスを提供しているので、とにかくそれらを復元する必要がありますか?
のために良いフィットのように聞こえる
私が見ているのは、名前を知らずにやりたいことです。しかし、私はこれをどのように実践するべきですか?私はこの種の試してみたいと思っているわけではないので、どのコールにもキャッチしてください。 – J4N
@ J4Nそれは、それぞれの呼び出しを試してみるのとかなり似ていますが、そのような弾力性を持たせたい場合は常にそうです。そして、基本的にはサーキットブレーカーを通過するファサードレイヤーを持っています。あなたが呼び出すすべてのサービスには独自のブレーカーがあります。明らかに、どのように複雑になるかは要件によって決まります。 – Clint
しかし、1つのサービスが失敗すると、もう1つのサービスも失敗します。 – J4N