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

时间:2013-01-09 09:37:29

标签: c# .net .net-4.0

.NET framework 4.0 MemoryCacheObjectCache有什么区别? 在哪里使用哪个对象?

3 个答案:

答案 0 :(得分:64)

ObjectCache是​​一个抽象类,它演示了如何构建一个符合编写ObjectCache的人要遵守的规则的Cache。您不能直接实例化ObjectCache,因为它是abstract

MemoryCache 是ObjectCache的实际实现。

来自文档:

ObjectCache

  

表示对象缓存并提供基本方法和   用于访问对象缓存的属性。

MemoryCache

  

表示实现内存缓存的类型。

查看MemoryCache的声明:

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable

我们可以看到MemoryCache继承自ObjectCache - 也就是说,它是使用Memory作为其存储的对象的缓存 - 因此它是 ObjectCache的实现

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

对于日常使用,只要满足您的需求,您就可以使用和使用MemoryCache。如果您想编写自己的,可以从ObjectCache继承并实现所需的方法和属性。然而,实际上,这样做可能没有什么实际好处,因为微软已经提供了其他几种缓存解决方案,就像许多其他供应商一样。

答案 1 :(得分:16)

来自MSDN;

  

ObjectCache类型是内存中对象的主要类型   缓存。内置的MemoryCache类派生自ObjectCache   类。 MemoryCache类是唯一具体的对象缓存   .NET Framework 4中的实现源自   ObjectCache类。

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable

MemoryCache继承自ObjectCache

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

public static ObjectCache cache = MemoryCache.Default;

答案 2 :(得分:4)

ObjectCache是一个抽象类,你不能“使用”它本身。正如Dash在评论中所说,它旨在展示如何构建缓存以及它支持的操作。 MemoryCacheObjectCache的实现,您的问题很可能是您应该使用的。但是,因为ObjectCache是抽象的,所以您可以轻松编写自己的FileCache继承自ObjectCache,这将完全有效。