2010-11-30 8 views
0

何ヶ月も検索してから、私は最終的にこれを投稿することにしました。外部アプリケーションの更新後にエンタープライズライブラリのキャッシュを更新する

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

キャッシュマネージャの各インスタンスにローカルなインメモリバージョンとは関係があると思いますが、すべてを一緒に持っていく方法を見つけることができません。

+1

Entlibは明示的に分散キャッシュではなく、複数のユーザーがキャッシュを更新するように設計されていません。分散キャッシュソリューションを使用する必要があります。 nCacheには、Entlibで動作する分散キャッシュ用のプラグインキャッシュマネージャがあります。 –

+0

おかげでクリス...私はここで見ていた "厄介"を説明 - http://stackoverflow.com/questions/9822226/sharing-enterprise-library-database-cache-between-multiple-applications/9824587#9824587 –

答えて

0

これはかなりです。エンタープライズライブラリで使用されているキャッシュはメモリ内にあり、ASP.NETサービスとWindowsサービスアプリケーションのメモリスペースは異なります。キャッシュを更新すると、もう一方のキャッシュを更新しません。

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

は、両方のアプリケーションドメインが共有できるキャッシュを作成し、これを行うには多くの方法があります:共有永続性ストア内

  • ストア項目(ファイルシステム、データベース、等)は両方のアプリドメインは一般的に

キャッシュアイテムのために簡単に

  • キャッシュ項目の更新を処理するキャッシュ・サービスを持っていますが、あなたは(たとえば、WCF経由)照会れるアクセスすることができ、あなたがあります「分散キャッシング」を実行しようとしています。このため、.NETの分散キャッシュオプションの詳細については、MSDN Magazineの記事「Distributed Caching On The Path To Scalability」を参照してください。

  • +0

    ありがとう答えのために。我々はEntlibが分散キャッシュではないことに気付きませんでした。複数のアプリケーションからキャッシュにアクセス/更新したい場合、EntLibキャッシュとAsp.netのキャッシュを使用することについて多くの記事が話しています。Soooo EntLib Cacheの価値について紛争しましたか? – MindWire

    +0

    Okie Dokie、キャッシュをMembaseに移動しました。これまでよく見ています。みんなありがとう。 EntLibキャッシングが提供する値ではまだ混乱しています! – MindWire

    +0

    正直言って、それはもうあまりありません。 Entlib 1.0日では、ASP.NETキャッシュはWebアプリケーションでのみ利用可能で、人々はリッチクライアントアプリケーションのキャッシュも必要としていたため、Entlibのキャッシュが必要でした。最近では、ウェブサーバーやクライアントアプリケーションに絶滅のおそれのある種が書かれているだけで、価値あるものではありません。 –

    関連する問題