.NET framework 4.0 MemoryCache
与ObjectCache
有什么区别?
在哪里使用哪个对象?
答案 0 :(得分:64)
ObjectCache是一个抽象类,它演示了如何构建一个符合编写ObjectCache的人要遵守的规则的Cache。您不能直接实例化ObjectCache,因为它是abstract。
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在评论中所说,它旨在展示如何构建缓存以及它支持的操作。 MemoryCache
是ObjectCache
的实现,您的问题很可能是您应该使用的。但是,因为ObjectCache
是抽象的,所以您可以轻松编写自己的FileCache
继承自ObjectCache
,这将完全有效。