3

Webアプリケーションはメモリ内キャッシュ(アプリケーションデータキャッシュ)を使用してスループットを向上させ、要求ごとに頻繁にクエリされたデータをデータベース(SQL Server)からロードする必要がなくなります。潜在的に、それはウェブファームに配備されるので、すべてのノードのキャッシュを同期させるという古典的な問題を解決する必要があります。だから我々が必要とするのは分散キャッシュです。SignalRバックプレーンを使用して分散キャッシュを構築できますか?

すぐに利用できる解決策は、NCacheとREDIS(そしておそらくもっと)です。しかし、すでにSignalRバックプレーンを使用して、Windowsサービス(およびブラウザクライアント)のデータセットへの変更を伝えているので、分散キャッシュの実装に使用できるかどうか疑問に思っています。

そうすることで、既存のデータセット変更済みのメッセージを再利用しますが、キャッシュを無効にするにはWebアプリケーション自体に登録します。新しいライブラリー/テクノロジーを導入する必要はないというのも大きな利点です。

私の最大の疑問は次のようなことです:それは意味がありますか?また、SignalRバックプレーンは信頼できるで、イベントが失われずに日付が古いキャッシュがないことを確認できますか?それとも、このアーキテクチャ上の誤用ですか?

+0

私はここで関連したより具体的な質問をしました:http://stackoverflow.com/questions/36239434/how-reliable-is-signalr-backplane – Dejan

答えて

1

Signalrは静的ではないリアルタイムソリューション用です。

ソリューションでは、1つのサービスのデータを選択し、バックプレーンによって別のサービスに送信します。じゃあ何 ?おそらくこれをメモリに保存します。サービスの1つが再起動したらどうなりますか?データはなくなります。あなたはレディスでこの問題に直面することはありません。さらに、このデータ用にローカルメモリを消費します。

また、有効期限をどのように管理するのですか?さらに、このキャッシュシステムをsignalrで実装するように努力します。

このためにsignalrバックプレーンを使用することはお勧めしません。 Redisまたはsmilar技術に固執する。

+1

私はあるサービスから別のサービスにデータを送信していません。私はちょうど*すでに*データ変更イベントを送信しているシステムを活用したいと思う。もう1つのサブスクライバだけが存在するでしょう:Webアプリケーション自体は、いつキャッシュをフラッシュするかを知っています。 メッセージを配信するために別の技術が必要だと言う理由がわかりません。 SignalRはそれをやっています。 – Dejan

+0

あなたはバックプレーンまたはシグナルバックプレーンとしてのsignalrについて話していますか? Signalrは、クライアントまたはサーバーに送信するクライアントにメッセージを送信します。したがって、あるサーバーではクライアントにメッセージを送信しますが、他のサーバークライアントを取得する場合は、このメッセージ信号にバックプレーンが必要です。私はこれを言ったかった。しかし、信号機をバックプレーンとして話しているのであれば、これはあなたの質問とは関係ありません。 –

+0

ここで説明するように、私はSignalRバックプレーンについて話しています:http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server。私の理解では、別々の(IISまたはWindowsサービス)プロセスにメッセージを広げるのに役立ちます。 – Dejan

関連する問題