52

MemoryCache.NET 框架 4.0与.NET 框架有什么区别ObjectCache?在哪里使用哪个对象?

4

3 回答 3

69

ObjectCache 是一个抽象类,它演示了您应该如何构建一个符合 ObjectCache 编写者希望您遵守的规则的缓存。您不能直接实例化 ObjectCache,因为它是抽象的。

MemoryCache 是ObjectCache的实际实现

从文档中:

对象缓存

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

内存缓存

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

查看 MemoryCache 的声明:

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable

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

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

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

于 2013-01-09T09:43:58.163 回答
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;
于 2013-01-09T09:45:54.770 回答
4

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

于 2013-01-09T09:43:43.723 回答