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

Abd*_*oor 46 .net c# .net-4.0

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

das*_*ash 65

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

MemoryCache是ObjectCache 的实际实现.

从文档:

ObjectCache

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

的MemoryCache

表示实现内存高速缓存的类型.

查看MemoryCache的声明:

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable
Run Code Online (Sandbox Code Playgroud)

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

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

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


Son*_*nül 16

MSDN;

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

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable
Run Code Online (Sandbox Code Playgroud)

MemoryCache继承自ObjectCache.

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

public static ObjectCache cache = MemoryCache.Default;
Run Code Online (Sandbox Code Playgroud)