2009-08-07 10 views
4

IISには2つのASP.NET 2.0アプリケーションがあります。公的な予約システムと、管理するための管理システムがあります。両方のアプリケーションで使用される、データベースにアクセスする共有DLLプロジェクトがあります。2つのIISアプリケーション間でHttpRuntime.Cacheを共有する

パフォーマンスを向上させるために、価格はDLLコードにキャッシュされ、要求ごとにデータベースに負担をかけません。ただし、管理者が価格を変更すると、管理アプリケーションでキャッシュがリフレッシュされます(公開アプリケーションではキャッシュが更新されません)。

これらの2つのアプリケーションがHttpRuntime.Cacheを共有するようにIISを構成することは可能ですか?もしそうなら、どのように設定すべきでしょうか?

答えて

2

これは、2つのアプリケーションがあるという点では、同じDLLメモリヒープを共有してはならないという点では妥協点です。あなたが必要とするものは、2つの間の通信チャネルであり、管理者のWebページにキャッシュの変更を通知するようにしてください。これにより、リフレッシュが発生します。

シンプルなものかもしれませんが、キャッシュするとシンプルなページが表示され、キャッシュが更新をチェックします。または、アプリケーションにタイムスタンプに基づいてアップデートを今すぐチェックするようにしてください。

(別のオプションは、キャッシュが存在するサービスを作成することですが、私はそれが簡単な解決策の範囲外だと思います)

+0

ありがとうThies。それは私が疑ったものです。管理サイトから呼び出されたパブリックサイトにジェネリックハンドラを既に追加していますが、もっと巧妙な方法があるかどうかは疑問でした。 – harriyott

0

ません。経験上、これは動作しません(.NET 4.6、IIS 8.5、2アプリケーションは同じアプリケーションプールを使用する共通DLL)。 ("cache items are stored in memory"を超えて)ドキュメントは非常に難しいです - 実際には唯一の記述部分はwhat @Thies stated aboveでしたが、私はこれはキャッシュがDLLの割り当てられたメモリに格納されているためだと考えていると言います(したがって、まだone process but two app domainsです) DLLは2つのアプリケーションドメインに別々にロードされ、DLLのメモリは共有されません。