Подтвердить что ты не робот

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?

Надав

4b9b3361

Ответ 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