2017-07-06 11 views
0

同じサーバー上にWCFサービスが多数(〜15)あります。それらに接続するために、私たちはクラス(私はClientConnectionと名付けました)を持っています。このクラスは、クライアント側のすべての異なるサービスを1つの特定のサーバーに管理します。WCFの接続損失を処理するために採用する戦略

このクラスは、要求された(およびキャッシュされた)すべてのサービスのチャネル(およびそのバインディング)を作成します。

接続が壊れた場合(1台のスイッチがダウンしていたとします)、1台のサーバーが応答するのに忙しいと思われる場合は、代替戦略が必要です。

これは、破損したことを検出して接続を復元しようとすることを意味します。

現在、私はこのクラスの中で、リモートサービスに到達できることを確認する「ウォッチドッグ」を持っています。そうでなければ、イベントを発生させます。

このイベントを受け取ったら、どうすればよいですか?チャンネルをリフレッシュしますか?それを廃棄して新しいものを作成しますか?また、同じサーバーに10〜15のアクティブなサービスを提供しているので、とにかくそれらを復元する必要がありますか?

これはCircuit Breaker Pattern

のために良いフィットのように聞こえる

答えて

0

を私はこの問題を持っている最初のものであってはならないと思うが、私はすべてのthoses問題を管理する方法について良い戦略を見つけるのに苦労しますその長短は、本質的に、ある時点までの再試行動作での失敗を許容し、徐々に接続を再確立しようとするバックオフ動作を持つものがあることです。

+0

私が見ているのは、名前を知らずにやりたいことです。しかし、私はこれをどのように実践するべきですか?私はこの種の試してみたいと思っているわけではないので、どのコールにもキャッチしてください。 – J4N

+0

@ J4Nそれは、それぞれの呼び出しを試してみるのとかなり似ていますが、そのような弾力性を持たせたい場合は常にそうです。そして、基本的にはサーキットブレーカーを通過するファサードレイヤーを持っています。あなたが呼び出すすべてのサービスには独自のブレーカーがあります。明らかに、どのように複雑になるかは要件によって決まります。 – Clint

+0

しかし、1つのサービスが失敗すると、もう1つのサービスも失敗します。 – J4N

関連する問題