1

ある種のキャッシュを実装したいサービスがありますが、.NET 4のObjectCacheを使用するか、サービスにプライベートフィールドを設定して、しばらくすると更新されるかがわかりません。

状況は次のとおりです。サービスは、大量のデータを返すために使用されます。現在、サービスへのすべてのリクエストでデータのデータベースにアクセスしています。このデータは、1日1回深夜にのみ更新されます。このデータをサービスにキャッシュし、データベースの更新後(たとえば午前12時30分頃)に毎晩更新したいと思います。

これまでは、ローカルフィールドにデータを入力し、常に実行される「モニタースレッド」を作成し、指定された時間が経過すると、それらのフィールドにデータを再入力していました。私が見た1つの欠点は、サービスクラスにストレージ用の追加のコードが含まれていることでした。

ObjectCacheに切り替えると、有効期限が切れたときに自動削除されるという利点があります。私が考えていたのは、CacheEntryRemovedCallbackデリゲートにコールバックメソッドを割り当てることでした。それが呼び出されたら、将来のある時点でデータを再キャッシュします(データベースが更新されてから約30分)。

私の質問は、WCFサービスの場合、データをキャッシュするためのより望ましいオプションは何ですか?

4

1 に答える 1

1

を使用しSystem.Runtime.Cachingます。自家製の自転車よりも優れています。

SqlChangeMonitorデータが深夜にのみ更新された場合に使用できます。これによりロジックが大幅に簡素化され、キャッシュがデータと同期されます。

http://www.codeproject.com/Articles/167282/NET-4-0-MemoryCache-with-SqlChangeMonitor

于 2012-08-29T02:21:12.960 に答える