.NET framework 4.0 MemoryCache
とObjectCache
の違いは何ですか?どのオブジェクトをどこで使用しますか?
ObjectCacheは、ObjectCacheを書いた人が従うことを望んでいるルールを遵守するCacheを構築する方法を示す抽象クラスです。 abstract であるため、ObjectCacheを直接インスタンス化することはできません。
MemoryCacheはObjectCacheの実際の実装です。
ドキュメントから:
オブジェクトキャッシュを表し、オブジェクトキャッシュにアクセスするための基本メソッドとプロパティを提供します。
インメモリキャッシュを実装する型を表します。
MemoryCacheの宣言を確認します。
public class MemoryCache : ObjectCache,
IEnumerable, IDisposable
MemoryCacheはObjectCacheから継承していることがわかります。つまり、メモリをストレージとして使用するオブジェクトのキャッシュです。したがって、これはObjectCacheの実装です。
自分で書くこともできます。たとえば、DatabaseCacheはObjectCacheからも継承できますが、代わりにデータベースをバッキングストレージとして使用します。
日常の使用では、ニーズに合っていれば、MemoryCacheを使用して使用します。独自のコードを作成する場合は、ObjectCacheを継承し、必要なメソッドとプロパティを実装できます。ただし、実際には、Microsoftが既に他の多くのベンダーと同様にいくつかの他のキャッシングソリューションを利用可能にしているため、これを行うことによる実用的なメリットはほとんどありません。
MSDN
;から
ObjectCacheタイプは、メモリ内オブジェクトキャッシュのプライマリタイプです。組み込みのMemoryCacheクラスは、ObjectCacheクラスから派生しています。 MemoryCacheクラスは、ObjectCacheクラスから派生した.NET Framework 4の唯一の具体的なオブジェクトキャッシュ実装です。
public class MemoryCache : ObjectCache,
IEnumerable, IDisposable
MemoryCache
はObjectCache
から継承します。
このように、デフォルトのMemoryCache
インスタンスへの参照を取得できます。
public static ObjectCache cache = MemoryCache.Default;
ObjectCache
は抽象クラスであり、それ自体を使用することはできません。 Dashはコメントで述べているように、キャッシュの構築方法とキャッシュがサポートする操作を示すように設計されています。 MemoryCache
はObjectCache
の実装であり、質問からはおそらく使用すべきものです。ただし、ObjectCache
は抽象であるため、FileCache
を継承する独自のObjectCache
を簡単に記述でき、完全に有効です。