1

クライアントへのコールバック参照のリストを(メモリ内に)保持する二重wcfサービスがあります。wcf サービスには、Subscribe と Unsubscribe の 2 つの方法があります。

1つのwcfサーバーと複数のクライアントですべて正常に動作します。Wcfルーターサービスを使用して負荷分散を行う2つのwcfサーバーを導入したときに問題が発生しました。

たとえば、2 つの wcf サーバー (wcf1 と wcf2) と 1 つのルーター サーバー (r1) があります。クライアントがルーター エンドポイントに対して "Subscribe" を呼び出すと、その要求が wcf1 サーバーと wcf2 サーバーの両方にブロードキャストされます。どちらもクライアントへのコールバック参照を保持するようにします。問題は、wcf サーバーの 1 つがダウンしたときに始まります。wcf1 サーバーがダウンすると、すべてのサブスクリプションが失われます。そのため、アクティブに戻ったときに、コールバックを実行するために使用できるサブスクリプションはなく、クライアントに再サブスクライブするように通知する方法はありません。

クライアント側で fault イベントをリッスンしてみました。ルーターのエンドポイントに接続しているため、トリガーされません。このイベントは、ルーター サーバーがダウンしている場合にのみ発生します。

誰かが私のような問題に直面しましたか? 私は何か間違ったことをしていますか?

4

1 に答える 1

0

これを処理する唯一の方法は、データベース、キャッシュ、または共有ドライブ上のファイルなど、ある種の共有可能なリソースにコールバック リストを永続化することです。これは起動時にサービスの各インスタンスからアクセスできるため、障害が発生した場合はすべてのコールバックが読み込まれます。

申し訳ありませんが、これはおそらくあなたがここで望んでいるものではありません。

于 2013-09-26T13:36:18.157 に答える