0

何ヶ月にもわたって探し回った後、私は最終的にこれを投稿することにしました.

エンタープライズ ライブラリを使用して項目をキャッシュする ASP.NET MVC アプリがあります。また、キャッシュされたアイテムを頻繁に更新する Windows サービスも使用しています。問題は、Windows サービスがキャッシュされたアイテムを更新するときに、IIS をリセットするまで mvc Web サイトが更新されたキャッシュされたアイテムを認識しないことです。IIS サービスを再起動するコードをサービスに入れることを考えましたが、もっと良い方法が必要だと思います。外部アプリからアイテムを削除することについて話している別の投稿が 1 つあるようですが、十分ではありません。

これは、キャッシュ マネージャーの各インスタンスにローカルなメモリ内バージョンと関係があると考えられますが、すべてをまとめる方法が見つかりません。

4

1 に答える 1

0

まあ、それはほとんどそれです。Enterprise Library で使用されているキャッシュはメモリ内にあり、ASP.NET と Windows サービス アプリケーションはどちらも異なるメモリ空間を持っています。一方のキャッシュを更新すると、他方のキャッシュは更新されません。

問題は ASP.NET アプリにも存在しますが、これは読み取り専用キャッシュであり、サービスから書き込みを実行しているようです。

必要なことは、両方のアプリ ドメインが共有できるキャッシュを作成することです。これを行うには多くの方法があります。

  • 両方のアプリ ドメインが簡単にアクセスできる共有永続ストア (ファイル システム、データベースなど) にアイテムを格納します。
  • キャッシュ アイテムの更新を処理するキャッシュ サービスを用意しますが、(WCF などを使用して) キャッシュ アイテムをクエリします。

一般に、「分散キャッシュ」を実行しようとしています。そのためには、.NET の分散キャッシュ オプションの詳細について、MSDN マガジンの記事「分散キャッシュのスケーラビリティへの道」を参照してください。

于 2010-11-30T18:58:41.333 に答える