Dotnet System.Web.Caching.Cache vs System.Runtime.Caching.MemoryCache
У меня есть класс, который должен хранить данные в кеше.
Первоначально я использовал его в asp.net-приложении, поэтому использовал System.Web.Caching.Cache.
Теперь мне нужно использовать его в службе Windows.
Теперь, насколько я понимаю, я не должен использовать кеш asp.net в приложении asp.net, поэтому я искал MemoryCache.
Проблема в том, что они несовместимы, поэтому либо я использую MemoryCache в приложении asp.net, либо мне нужно будет создать адаптер, чтобы убедиться, что две реализации кэша имеют один и тот же интерфейс (возможно, из ObjectCache и использовать внутренний кеш asp.net?)
Каковы последствия использования MemoryCache в asp.net?
Надав
Ответы
Ответ 1
Я бы пошел с вашим вторым вариантом и немного рефакторировал вещи. Я бы создал интерфейс и два поставщика (которые являются вашими адаптерами):
public interface ICachingProvider
{
void AddItem(string key, object value);
object GetItem(string key);
}
public AspNetCacheProvider : ICachingProvider
{
// Adapt System.web.Caching.Cache to match Interface
}
public MemoryCacheProvider : ICachingProvider
{
// Adapt System.Runtime.Caching.MemoryCache to match Interface
}
Ответ 2
Сегодня утром я столкнулся с библиотекой, которая могла бы помочь в этой ситуации. Это CacheAdapter, который позволяет вам кодировать общий интерфейс и заменять механизм кэширования (System.Web.Caching, System.Runtime.Cache или AppFabric) через конфигурацию.
https://bitbucket.org/glav/cacheadapter