MemoryCache
.NET 框架 4.0与.NET 框架有什么区别ObjectCache
?在哪里使用哪个对象?
3 回答
ObjectCache 是一个抽象类,它演示了您应该如何构建一个符合 ObjectCache 编写者希望您遵守的规则的缓存。您不能直接实例化 ObjectCache,因为它是抽象的。
MemoryCache 是ObjectCache的实际实现。
从文档中:
表示对象缓存并提供用于访问对象缓存的基本方法和属性。
表示实现内存缓存的类型。
查看 MemoryCache 的声明:
public class MemoryCache : ObjectCache,
IEnumerable, IDisposable
我们可以看到 MemoryCache 继承自 ObjectCache——也就是说,它是使用 Memory 作为其存储的对象的缓存——因此这是ObjectCache的一个实现。
你可以自己写;例如,DatabaseCache,它也可以从 ObjectCache 继承,但它会使用数据库作为后备存储。
对于日常使用,只要它满足您的需求,您就可以使用和使用 MemoryCache。如果您想自己编写,您可以从 ObjectCache 继承并实现所需的方法和属性。然而,实际上,这样做可能没有什么实际好处,因为微软已经提供了其他几种缓存解决方案,许多其他供应商也是如此。
从MSDN
;
ObjectCache 类型是内存中对象缓存的主要类型。内置的 MemoryCache 类派生自 ObjectCache 类。MemoryCache 类是 .NET Framework 4 中唯一从 ObjectCache 类派生的具体对象缓存实现。
public class MemoryCache : ObjectCache,
IEnumerable, IDisposable
MemoryCache
继承自ObjectCache
。
您可以MemoryCache
像这样获得对默认实例的引用;
public static ObjectCache cache = MemoryCache.Default;
ObjectCache
是一个抽象类,你不能“使用”它本身。正如 Dash 在他的评论中所说,它旨在展示应该如何构建缓存以及它支持哪些操作。MemoryCache
是您的问题的实现,ObjectCache
并且可能是您应该使用的。但是,因为ObjectCache
它是抽象的,所以您可以轻松地编写自己的FileCache
继承自ObjectCache
,并且它是完全有效的。