Общее кэширование Azure и совместное кэширование в одном проекте

Поэтому мне было интересно, можно ли использовать как общее кэширование Azure, так и новый совместно размещенный кеш для веб-роли? Я хочу сохранить состояние сеанса в старом общем кэше Azure, чтобы сохранить состояние сеанса между развертываниями приложения с использованием VIP-свопа. Я хотел бы использовать новый совмещенный кеш для кэширования значений в памяти, к которым обращаются довольно часто, но которые не часто меняются в базе данных, поэтому они идеально подходят для кеширования с новым совмещенным кешем и уведомлениями.

2 ответа

Решение

Я не думаю, что можно заставить обоих работать. Похоже, что для одной версии кэширования требуются версии 101.0.0.0 Microsoft.ApplicationServer.Caching и Microsoft.Web.DistributedCache, а для другой - версии 1.0.0.0. Это можно проверить, установив различные пакеты nuget для кэширования Azure и общего кэширования Azure. Если кто-то знает, как запустить оба приложения, пожалуйста, опубликуйте решение здесь.

Я перенес свои данные сеанса в Azure SQL с помощью универсальных поставщиков Microsoft ASP.NET и добавил распределенный кеш в проект вместо использования обоих методов кеширования.

Должно работать нормально - просто использовали разные имена для кешей в разделе конфигурации:

<dataCacheClients>
    <dataCacheClient name="colocated">
       <autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
    </dataCacheClient>
    <dataCacheClient name="shared">
       <hosts>
           <host name="yourcachename.cache.windows.net" cachePort="22233" />
       </hosts>
    </dataCacheClient>
</dataCacheClients>

и в коде:

DataCache coloCache = new DataCache("colocated");
DataCache sharedcache = new DataCache("shared");

и в вашей конфигурации сеанса:

<!-- Windows Azure Caching session state provider -->
<sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
  <providers>
    <add name="AFCacheSessionStateProvider" 
      type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
      cacheName="shared" 
      dataCacheClientName="shared" 
      applicationName="AFCacheSessionState"/>
  </providers>
</sessionState>
Другие вопросы по тегам