Общее кэширование 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>