キャッシングを使用するのは本当に混乱しています。ASP.NETキャッシュでは、キャッシュオブジェクトはグローバルであるため、どこからでもアクセスできます。しかし、キャッシングアプリケーションブロックを見ると、application_startフェーズで作成したキャッシュをどのように使用できますか。application_startで作成したキャッシュを使用するための戦略は何ですか?
前もって感謝します、
キャッシングを使用するのは本当に混乱しています。ASP.NETキャッシュでは、キャッシュオブジェクトはグローバルであるため、どこからでもアクセスできます。しかし、キャッシングアプリケーションブロックを見ると、application_startフェーズで作成したキャッシュをどのように使用できますか。application_startで作成したキャッシュを使用するための戦略は何ですか?
前もって感謝します、
キャッシュブロックの適切な構成スニペットを作成し、ASP.NETアプリケーションのweb.configに追加したら、asp.netアプリケーションのどこからでも同じ方法でアイテムをキャッシュに追加できます。同様に、app.configまたはweb.configで同じ構成スニペットを共有するビジネスレイヤーまたはサービスレイヤーから、キャッシュからアイテムを取得できるはずです。
これはここでよく説明されています:キャッシングの調査:キャッシングアプリケーションエンタープライズライブラリ4.1の使用
したがって、たとえば次のように、ICacheManagerを作成して使用してみてください。
//Create Instance of CacheManager
ICacheManager objCacheManager = CacheFactory.GetCacheManager();
//Add a new CacheItem to Cache
objCacheManager.Add("YourKey", yourObject);
次に、そのIISで実行されている別のプロジェクトまたはWebサービスから、別のアプリケーションとして、web.configにキャッシュを構成するための同じスニペットが含まれている場合は、次を使用します。
//Create Instance of CacheManager
ICacheManager objCacheManager = CacheFactory.GetCacheManager();
// Check If Key is in Cache Collection
if(objCacheManager.Contains("YourKey"))
{
var myObject = objCacheManager.GetData("YourKey");
}
実際、これはアプリケーションアーキテクチャの下位レベルでダウンしていると想像する必要があります。ビジネスロジックを介してデータベースからデータをロードしている場合、BLの一部がデータベースから取得してキャッシュに追加し、次のクエリでチェックすることを想像します。キャッシュに存在する場合、存在しない場合はデータベースから再度ロードされます。
構成スニペットの例については、上記のリンクを確認してください。