Рекомендации по использованию службы кэширования Azure AppFabric? - PullRequest
4 голосов
/ 23 февраля 2012

Я успешно начал использовать службу кэширования Azure AppFabric, но я не уверен, каков наилучший способ создания объекта DataCacheFactory.Сейчас я создаю его для каждого вызова в кэш, но, видимо, это не идеальный способ сделать это ...

Некоторые советуют вызывать синглтон.Но я не уверен, что понимаю, как это будет реализовано (не фактический класс Singleton, а как связать все это вместе).

Сегодня у меня есть класс CacheProvider, который создан для меня с помощью Ninject, где я могу выполнять операции Get / Put / Remove.Для каждого из этих методов я создаю объект DataCacheFactory и затем вызываю .GetDefaultCache (), чтобы получить объект DataCache, где я вызываю Put / Get / Remove соответственно.Я делаю это с помощью одного метода, который выглядит следующим образом:

private T Cache<T>(Func<DataCache, T> cacheAction)
{
    using (DataCacheFactory dataCacheFactory = new DataCacheFactory())
    {
        DataCache dataCache = dataCacheFactory.GetDefaultCache();
        return cacheAction(dataCache);
    }
}

Теперь я почти уверен, что это не очень умная идея, вместо этого я должен получить объект DataCache через Singleton, гдеобъект DataCacheFactory создается только один раз.НО как этот объект выживет между запросами?И как это работает с> 1 экземпляром в Azure?

Надеюсь, все это имеет смысл, и что кто-то с большим опытом, чем я (3 часа), может мне помочь.

1 Ответ

6 голосов
/ 23 февраля 2012

Объекты Singleton живут в области приложения. Просто объявите свой частный объект DataCache на глобальном статическом уровне, предоставьте свойство Get, которое создает экземпляр объекта, если он нулевой, или возвращает объект, если он не нулевой.

Таким образом, вы будете оплачивать стоимость настройки прибора и подключения кеша только один раз за повторное использование приложения.

Каждый экземпляр будет создавать свой собственный объект DataCache, и это нормально.

Фактические данные, в которых хранится кэш, хранятся не в памяти локального компьютера, а на выделенных серверах кэша Azure, которые распределены и работают очень быстро.

...