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