ある種のキャッシュを実装したいサービスがありますが、.NET 4のObjectCacheを使用するか、サービスにプライベートフィールドを設定して、しばらくすると更新されるかがわかりません。
状況は次のとおりです。サービスは、大量のデータを返すために使用されます。現在、サービスへのすべてのリクエストでデータのデータベースにアクセスしています。このデータは、1日1回深夜にのみ更新されます。このデータをサービスにキャッシュし、データベースの更新後(たとえば午前12時30分頃)に毎晩更新したいと思います。
これまでは、ローカルフィールドにデータを入力し、常に実行される「モニタースレッド」を作成し、指定された時間が経過すると、それらのフィールドにデータを再入力していました。私が見た1つの欠点は、サービスクラスにストレージ用の追加のコードが含まれていることでした。
ObjectCacheに切り替えると、有効期限が切れたときに自動削除されるという利点があります。私が考えていたのは、CacheEntryRemovedCallbackデリゲートにコールバックメソッドを割り当てることでした。それが呼び出されたら、将来のある時点でデータを再キャッシュします(データベースが更新されてから約30分)。
私の質問は、WCFサービスの場合、データをキャッシュするためのより望ましいオプションは何ですか?