В чем разница между .NET framework 4.0 MemoryCache
vs ObjectCache
?
Где использовать какой объект?
В чем разница между MemoryCache и ObjectCache в .net 4.0?
Ответ 1
ObjectCache - это абстрактный класс, который демонстрирует, как вы должны создавать кэш, который придерживается правил, которые человек, который написал ObjectCache, хочет подчиниться. Вы не можете напрямую создавать ObjectCache, поскольку это аннотация.
MemoryCache - это фактическая реализация ObjectCache.
Из документации:
Представляет кеш объекта и предоставляет базовые методы и свойства для доступа к кешу объекта.
Представляет тип, который реализует кеш в памяти.
Глядя на объявление для MemoryCache:
public class MemoryCache : ObjectCache,
IEnumerable, IDisposable
Мы можем видеть, что MemoryCache наследуется от ObjectCache, то есть является кешем для объектов, которые используют память в качестве своего хранилища - поэтому это реализация ObjectCache.
Вы можете написать свой собственный; например, DatabaseCache, который также может наследоваться от ObjectCache, но вместо этого он будет использовать базу данных в качестве хранилища резервных копий.
Для повседневного использования, если оно отвечает вашим потребностям, вы будете использовать и потреблять MemoryCache. Если вы хотите написать свой собственный, вы можете наследовать от ObjectCache и реализовать необходимые методы и свойства. Однако на самом деле, вероятно, мало практической пользы для этого, поскольку Microsoft уже сделала несколько других решений для кеширования, как и многие другие поставщики.
Ответ 2
Из MSDN
;
Тип ObjectCache является основным типом для объекта in-memory кэш. Встроенный класс MemoryCache происходит из ObjectCache класс. Класс MemoryCache является единственным конкретным кэшем объекта реализации в .NET Framework 4, которая проистекает из Класс ObjectCache.
public class MemoryCache : ObjectCache,
IEnumerable, IDisposable
MemoryCache
наследуется от ObjectCache
.
Вы можете получить ссылку на экземпляр MemoryCache
по умолчанию:
public static ObjectCache cache = MemoryCache.Default;
Ответ 3
ObjectCache
является абстрактным классом, вы не можете его использовать. Как говорит Дэш в своем комментарии, он предназначен для того, чтобы показать, как должен строиться кеш и какие операции он поддерживает. MemoryCache
- это реализация ObjectCache
, и из вашего вопроса, скорее всего, вы должны использовать. Однако, поскольку ObjectCache
является абстрактным, вы можете так же легко написать свой собственный FileCache
, наследующий от ObjectCache
, и это было бы совершенно правильно.