dotnet System.Web.Caching.Cache против System.Runtime.Caching.MemoryCache - PullRequest
18 голосов
/ 07 октября 2010

У меня есть класс, который должен хранить данные в кеше. Первоначально я использовал его в приложении asp.net, поэтому я использовал System.Web.Caching.Cache.

Теперь мне нужно использовать его в службе Windows. Теперь, насколько я понимаю, я не должен использовать кэш asp.net в приложении, не являющемся asp.net, поэтому я искал MemoryCache.

Проблема в том, что они несовместимы, поэтому я либо перехожу на использование MemoryCache в приложении asp.net, либо мне нужно создать адаптер, чтобы убедиться, что две реализации кэша имеют одинаковый интерфейс (возможно, производные от ObjectCache и использовать кэш asp.net для внутреннего использования?)

Каковы последствия использования MemoryCache в asp.net?

Надав

Ответы [ 2 ]

7 голосов
/ 07 октября 2010

Я бы пошел с вашим вторым вариантом и немного поменял бы вещи.Я бы создал интерфейс и двух провайдеров (которые являются вашими адаптерами):

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
}
4 голосов
/ 01 июня 2011

Этим утром я наткнулся на библиотеку, которая могла бы помочь в этой ситуации.Это CacheAdapter, который позволяет вам кодировать против общего интерфейса и менять механизм кэширования (System.Web.Caching, System.Runtime.Cache или AppFabric) через конфигурацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...