2013-05-30 8 views
1

Я развернул Azure WebRole с совместным кэшированием. Я использую следующую конфигурацию по умолчанию для клиентов.Как повторно использовать DataCacheFactory с кеш-кешем (Co-Based)

<dataCacheClient name="default"> 
    <autoDiscover isEnabled="true" identifier="[name]" /> 
    <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />--> 
</dataCacheClient> 

и в настоящее время я бегу следующий код каждый раз, когда я доступ к кэшу

DataCacheFactory CacheFactory = new DataCacheFactory(); _Cache = CacheFactory.GetDefaultCache();

Это вызывает мое приложение Пул получить прекращено часто. Как DataCacheFactory и повторно использовать его, когда это необходимо.

Заранее спасибо

ответ

2

Я предлагаю вам использовать ASP.NET Application State сохранить объект DataChache Factory.

Вы можете написать класс-помощник, чтобы получить объект Factory Cache Factory. Нечто подобное (не проверено):

public class DataCacheHelper 
{ 
    public DataCacheHelper() 
    { 
     DataCacheFactory factory = new DataCacheFactory(); 
     HttpContext.Current.Application.Lock(); 
     HttpContext.Current.Application["dcf"] = factory; 
     HttpContext.Current.Application.Unock(); 
    } 

    public DataCacheFactory GetFactory() 
    { 
     var factory = HttpContext.Current.Application["dcf"]; 
     if (factory == null) 
     { 
      factory = new DataCacheFactory(); 
      HttpContext.Current.Application.Lock(); 
      HttpContext.Current.Application["dcf"] = factory; 
      HttpContext.Current.Application.Unock(); 
     } 
     return factory; 
    } 
} 

Или, если вы используете ASP.NET MVC - можно создать базовый класс Controller, который имеет GetCacheFactory метод (который именно то, что вспомогательный метод делать), и есть все ваши контроллеры наследуют эту базу вместо фреймворка. То же самое можно было бы достичь для веб-форм.

+0

Привет, в настоящее время я реализовал то же самое. Служба была размещена на малом экземпляре Windows Server 2012. Мой код «DataCache _cache = HttpContext.Current.Application [" _ sessionStore "]! = Null? (DataCache) HttpContext.Current.Application ["_ sessionStore"]: SessionStore.Init(); ' –

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^