52

.NET Framework 4.0 と の違いは何MemoryCacheですかObjectCache? どのオブジェクトをどこで使用するか?

4

3 に答える 3

69

ObjectCache は、ObjectCache の作成者が従うことを望んでいるルールに準拠するキャッシュを構築する方法を示す抽象クラスです。ObjectCache はabstractであるため、直接インスタンス化することはできません。

MemoryCache はObjectCacheの実際の実装です。

ドキュメントから:

ObjectCache

オブジェクト キャッシュを表し、オブジェクト キャッシュにアクセスするための基本メソッドとプロパティを提供します。

メモリーキャッシュ

メモリ内キャッシュを実装する型を表します。

MemoryCache の宣言を見ると、次のようになります。

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable

MemoryCache が ObjectCache を継承していることがわかります。つまり、これはメモリをストレージとして使用するオブジェクトのキャッシュです。したがって、これはObjectCacheの実装です。

自分で書くこともできます。たとえば、DatabaseCache も ObjectCache から継承できますが、代わりにデータベースをバッキング ストレージとして使用します。

日常的に使用する場合は、ニーズを満たしていれば、MemoryCache を使用して消費します。独自に記述したい場合は、ObjectCache から継承して、必要なメソッドとプロパティを実装できます。ただし、実際には、Microsoft は他の多くのベンダーと同様に、他のいくつかのキャッシュ ソリューションを利用できるようにしているため、これを行うことによる実際的な利点はおそらくほとんどありません。

于 2013-01-09T09:43:58.163 に答える
16

からMSDN;

ObjectCache 型は、メモリ内オブジェクト キャッシュの主要な型です。組み込みの MemoryCache クラスは、ObjectCache クラスから派生します。MemoryCache クラスは、ObjectCache クラスから派生した .NET Framework 4 の唯一の具体的なオブジェクト キャッシュの実装です。

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable

MemoryCacheから継承しObjectCacheます。

次のように、デフォルトMemoryCacheインスタンスへの参照を取得できます。

public static ObjectCache cache = MemoryCache.Default;
于 2013-01-09T09:45:54.770 に答える
4

ObjectCacheは抽象クラスなので、それ自体を「使用」することはできません。Dash がコメントで述べているように、キャッシュを構築する方法と、キャッシュがサポートする操作を示すように設計されています。MemoryCacheあなたの質問の実装でObjectCacheあり、あなたが使用すべきものである可能性があります。ただし、 は抽象的であるため、独自の継承元ObjectCacheを簡単に記述でき、完全に有効です。FileCacheObjectCache

于 2013-01-09T09:43:43.723 に答える