2013-01-09 71 views
38

.NET Framework 4.0 MemoryCache vs ObjectCache有什麼區別? 哪裏可以使用哪個對象?.net 4.0中MemoryCache與ObjectCache有什麼區別?

+12

的MemoryCache是​​具體落實ObjectCache的。從設計角度來看,ObjectCache是​​抽象的,並且演示瞭如何構建緩存。 MemoryCache就是這個的實際實現。 – dash

回答

58

ObjectCache是​​一個抽象類,演示瞭如何構建符合規則的高速緩存,寫入ObjectCache的人希望您遵守規則。您不能直接實例化ObjectCache,因爲它是abstract

的MemoryCache是​​ObjectCache的實際執行

從文檔:

ObjectCache

代表對象的高速緩存,並提供基座的方法和用於訪問該對象緩存 屬性。

MemoryCache

表示實現內存中的高速緩存的類型。

縱觀聲明的MemoryCache:

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable 

我們可以看到的MemoryCache從ObjectCache繼承 - 也就是說,它是對象使用內存作爲其存儲的高速緩存 - 因此,這是一個實現ObjectCache的

你可以寫你自己的;例如DatabaseCache,它也可以從ObjectCache繼承,但它會使用數據庫作爲後備存儲。

對於日常使用,只要它滿足你的需求,你可以使用和消耗的MemoryCache。如果你想自己寫,你可以從ObjectCache繼承並實現所需的方法和屬性。但是,實際上,這樣做可能沒有什麼實際好處,因爲微軟已經制定了其他幾種緩存解決方案,就像許多其他供應商一樣。

+1

要創建您自己的應用程序,請參閱[在MSDN上創建自定義緩存類](https://msdn.microsoft.com/en-us/library/ff919782.aspx#Anchor_5) – Stacked

3

ObjectCache是一個抽象類,你不能「使用」它本身。正如Dash在他的評論中所說的,它旨在展示如何構建緩存以及它支持哪些操作。 MemoryCacheObjectCache的實現,從你的問題可能是你應該使用的。然而,由於ObjectCache是抽象的,你可以很容易地編寫自己的FileCacheObjectCache繼承,這將是非常有效的。

16

MSDN;

的ObjectCache類型是用於在內存中的對象 緩存的主要類型。內置的MemoryCache類派生自ObjectCache 類。 MemoryCache類是.NET Framework 4中的唯一具體對象緩存 實現,該實現源自 ObjectCache類。從ObjectCache

public class MemoryCache : ObjectCache, 
    IEnumerable, IDisposable 

MemoryCache繼承。

您可以像這樣獲得對默認MemoryCache實例的引用;

public static ObjectCache cache = MemoryCache.Default;