.net 4.0中的MemoryCache与ObjectCache有什么区别?

.NET Framework 4.0 MemoryCacheObjectCache什么ObjectCache ? 哪里使用哪个对象?

ObjectCache是​​一个抽象类,演示了如何构build符合规则的高速caching,ObjectCache编写者希望您遵守这些规则。 您不能直接实例化ObjectCache,因为它是抽象的 。

MemoryCache是​​ObjectCache 的实际实现

从文档:

ObjectCache

表示对象caching并提供访问对象caching的基本方法和属性。

的MemoryCache

表示实现内存中caching的types。

查看MemoryCache的声明:

 public class MemoryCache : ObjectCache, IEnumerable, IDisposable 

我们可以看到MemoryCache是​​从ObjectCacheinheritance的,也就是说,它是一个使用Memory作为存储的对象的caching – 因此这是ObjectCache的一个实现

你可以写自己的; 例如DatabaseCache,它也可以从ObjectCacheinheritance,但是它将使用数据库作为后备存储。

对于日常使用,只要满足您的需求,就可以使用并使用MemoryCache。 如果你想自己写,你可以从ObjectCacheinheritance并实现所需的方法和属性。 但是,实际上,这样做可能没有什么实际的好处,因为微软已经制定了其他几种caching解决scheme,其他厂商也一样。

来自MSDN ;

ObjectCachetypes是内存中对象caching的主要types。 内置的MemoryCache类派生自ObjectCache类。 MemoryCache类是.NET Framework 4中唯一从ObjectCache类派生的具体对象caching实现。

 public class MemoryCache : ObjectCache, IEnumerable, IDisposable 

MemoryCacheinheritance自ObjectCache

您可以像这样获取对默认MemoryCache实例的引用;

 public static ObjectCache cache = MemoryCache.Default; 

ObjectCache是一个抽象类,你不能“使用”它本身。 正如Dash在他的评论中所说的那样,它旨在展示如何构buildcaching以及它支持哪些操作。 MemoryCache是一个ObjectCache的实现,从你的问题可能是你应该使用的。 但是,因为ObjectCache是抽象的,所以您可以轻松地编写自己的FileCacheinheritance自ObjectCache ,这将是完全有效的。