2011-07-16 7 views
0

私たちのシステムでは、AzureのAppFabric Cachingを使用しており、複数の種類のアプリケーションとロールが同じキャッシュ値を共有しています。私はすべてのキーを整理する方法についてのいくつかの推奨事項を探していますし、変更されたときにエントリを無効/フラッシュする機能もあります。どのようにキャッシュキーを整理して維持し、フラッシュしますか?

私は、キーを作成する一連のメソッドを持つ静的クラスを持っているという考え方で遊んできました。たとえば、

string CreateUserByIdKey(int userId) - Returns "User_5" 
string CreateWidgetsByCompanyKey(int companyId) - Returns "Widgets_Company_5" 

このようにして、異なるアプリケーション間でキーを作成して使用することができます。しかし、これは非常にエレガントでメンテナンスを感じることはありません。また、データが更新されたときにこれらのキーのどれを無効にする必要があるかを知る特殊なフラッシュメソッドを作成する必要があります。

これを行うにはどうすればよいですか?

答えて

1

私たちのアプローチは、戦略の拡張子を持つCacheManagerを使用することです。 CacheManagerはソリューションのコア部分にあり、そのコアはすべてのロールを通じて参照されます。

キャッシュキーを生成する方法やエンドポイント名などのような、共有されるものについては、WellKnownComponentsのリストがあります。これは部分的なクラスで拡張できるTT生成ファイル(よくファイル)です。

私があなたのケースで行うことは、よく知られているコンポーネントクラスに関数を生成するキャッシュキーを追加してから、アプリケーションを参照します。

var seeker = CacheManager.Get<RequestOnly>(WellKnownComponents.Seeker.Caching.GetSeekerKey(seekerId),() => GetSeekerFromDataBase(seekerId)); 

これはおおよその動作です。また、無効化のための特別なフラッシュメソッドが必要ですが、重要な要素(たとえば、ソリューションの代わりに1つのコンポーネント)を分離して組み合わせることができます。

関連する問題