0

WindowsAppFabricを使用して分散キャッシュに移行することを検討しています。現在、ASP.NET 4.0アプリケーションには、MemoryCacheを使用するキャッシュ実装があります。

重要な機能の1つは、アイテムがキャッシュに追加されるときに、ChangeMonitorを含むCacheItemPolicyが含まれることです。

 CacheItemPolicy policy = new CacheItemPolicy();
 policy.Priority = CacheItemPriority.Default;
 policy.ChangeMonitors.Add(new LastPublishDateChangeMonitor(key, item, GetLastPublishDateCallBack));

変更モニターは、内部でタイマーを使用して、渡されたデリゲートを定期的にトリガーします。これは通常、比較のためにDBから値を取得する方法です。

ポリシーとその変更モニターは、アイテムがキャッシュに追加されるときに含まれます。

Cache.Add(key, item, policy);

AppFabricのDataCacheクラスを初期に見ると、アイテムをキャッシュに追加するときにタイムスパンを含めることができますが、CacheItemPolicy自体を含めることはできないことがわかります。

AppFabricで同じChangeMonitorタイプの機能を実装する別の方法はありますか?おそらく通知?

乾杯

ニール

4

1 に答える 1

0

コンピュータサイエンスには、キャッシュの無効化、名前の付け方、オフバイワンエラーの2つの難しい問題しかありません。
フィル・カールトン

残念ながら、AppFabricは、キャッシュされたアイテムを無効にするこの種の監視をサポートしていません。同様に、のようなものもサポートしていませんSqlCacheDependency

ただし、AppFabric 1.1では、リードスルーとライトビハインドがサポートされています。後書きとは、アプリケーションが基になるデータベースではなく、キャッシュされたデータを最初に更新することを意味します。これにより、キャッシュは常に最新バージョンを保持します(したがって、基になるデータを監視する必要はありません)。次に、キャッシュは基盤となるデータベースを非同期的に更新します。リードスルー/ライトビハインドを実装するには、DataCacheStoreProviderMSDN)から継承するオブジェクトを作成し、データベースの構造とその更新方法を理解するRead、Write、およびDeleteメソッドを作成する必要があります。

于 2013-02-06T16:40:48.083 に答える