[英]In .NET, why is ObjectCache the preferred type over MemoryCache?
[英]What is difference between MemoryCache vs ObjectCache in .net 4.0?
.NET framework 4.0 MemoryCache
與ObjectCache
什么ObjectCache
? 在哪里使用哪個對象?
ObjectCache是一個抽象類,它演示了如何構建一個符合編寫ObjectCache的人要遵守的規則的Cache。 您無法直接實例化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
是抽象的,所以您可以輕松編寫自己繼承自ObjectCache
的FileCache
,它將完全有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.