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

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

Abdul Saboor asked 2020-07-12T16:27:29Z
3个解决方案
64 votes

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

MemoryCache是ObjectCache的实际实现。

从文档中:

对象缓存

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

内存缓存

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

查看MemoryCache的声明:

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable

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

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

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

dash answered 2020-07-12T16:28:29Z
16 votes

来自MemoryCache;

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

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable

MemoryCacheObjectCache继承。

您可以像这样引用默认的MemoryCache实例。

public static ObjectCache cache = MemoryCache.Default;
Soner Gönül answered 2020-07-12T16:29:02Z
4 votes

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

PhilPursglove answered 2020-07-12T16:29:23Z
translate from https://stackoverflow.com:/questions/14232130/what-is-difference-between-memorycache-vs-objectcache-in-net-4-0