Migrar do cache compartilhado para o serviço de cache gerenciado do Azure

Importante

A Microsoft recomenda que todos os novos desenvolvimentos usem o Cache Redis do Azure. Para obter documentação e diretrizes atuais sobre como escolher uma oferta do Cache do Azure, confira qual oferta do Cache do Azure é certa para mim?

A migração de seus aplicativos que usam Cache Compartilhado do Microsoft Azure para Serviço de Cache Gerenciado pode ser realizada com alterações mínimas em seu aplicativo. Como Serviço de Cache Gerenciado usa a maior parte da mesma API que Cache Compartilhado, o código existente que usa Cache Compartilhado para acessar um cache pode ser reutilizado com Serviço de Cache Gerenciado. Este tópico mostra como fazer as alterações necessárias de configuração e aplicativo para migrar seus aplicativos Cache Compartilhado para usar Serviço de Cache Gerenciado.

Observação

O Cache Compartilhado do Azure foi desativado em setembro de 2014. É recomendável migrar para o Cache Redis do Azure, mas se você quiser mover seu aplicativo sem alterações de código, poderá migrar para Serviço de Cache Gerenciado. Este tópico aborda a migração para Serviço de Cache Gerenciado; para obter diretrizes sobre como migrar para o Cache Redis do Azure, consulte Migrar de Cache Compartilhado para o Cache Redis do Azure (versão prévia).

Etapas da migração

As seções a seguir descrevem as etapas necessárias para migrar um aplicativo Cache Compartilhado do Microsoft Azure para usar Serviço de Cache Gerenciado.

  • Escolher uma oferta de Cache

  • Criar um Cache

  • Configurar o cache

  • Configurar os clientes de Cache

    • Remover a configuração de cache compartilhado

    • Configurar um cliente de cache usando o pacote NuGet de cache

  • Migrar o cache de sessão ASP.NET e saída de página

Escolher uma oferta de Cache

Serviço de Cache Gerenciado está disponível nas três ofertas a seguir.

  • Básica - Cache em tamanhos de 128 MB a 1 GB em incrementos de 128 MB, com um cache nomeado padrão

  • Standard - Cache em tamanhos de 1 GB a 10 GB, em incrementos de 1 GB, com suporte a notificações, alta disponibilidade e até dez caches nomeados

  • Premium - Cache em tamanhos de 5 GB a 150 GB em incrementos de 5 GB, com suporte para notificações, alta disponibilidade e até dez caches nomeados

Observação

Essas ofertas diferem em termos de preço e recursos. Para obter mais informações, consulte perguntas frequentes sobre preços do serviço de cache e ofertas de cache para Serviço de Cache Gerenciado do Azure. Detalhes adicionais também são fornecidos na seção Configurar o Cache a seguir neste guia de migração.

Todos os recursos de cache de Cache Compartilhado estão disponíveis em todas as três ofertas Serviço de Cache Gerenciado, portanto, um ponto de partida para a migração é escolher a oferta de cache Serviço de Cache Gerenciado que corresponde ao tamanho do seu Cache Compartilhado conta. Depois de implantar o aplicativo, você pode monitorar o desempenho do cache e escalar verticalmente ou para baixo, dependendo dos requisitos do aplicativo. Para obter mais informações sobre como monitorar o desempenho e o dimensionamento, consulte Monitorar Serviço de Cache Gerenciado do Azure e dimensionar um cache para Serviço de Cache Gerenciado do Azure.

Criar um Cache

As instâncias de cache em Serviço de Cache Gerenciado são criadas usando scripts do PowerShell.

Importante

Depois que uma instância Serviço de Cache Gerenciado é criada usando os cmdlets do PowerShell, ela pode ser exibida e configurada no Portal de Gerenciamento do Azure.

Para criar uma instância Serviço de Cache Gerenciado

  1. Abra uma janela de comando do PowerShell do Azure.

    Observação

    Para obter instruções sobre como instalar e usar o Azure PowerShell, consulte Como instalar e configurar o Azure PowerShell.

  2. Invoque o cmdlet Add-AzureAccount e insira o endereço de e-mail e senha associados à sua conta.

    Observação

    Se você tiver configurado o PowerShell do Azure com um certificado para sua conta, então você pode pular esta etapa. Para obter mais informações sobre conectar o Azure PowerShell com sua conta do Azure, consultar Como instalar e configurar o Azure PowerShell.

  3. Invoque o cmdlet New-AzureManagedCache e especifique o nome, região, oferta de cache e tamanho do cache. No exemplo a seguir, um cache Basic de 128 MB é criado com o nome contosocache na região geográfica South Central US.

    New-AzureManagedCache -Name contosocache -Location "South Central US" -Sku Basic -Memory 128MB
    

    Observação

    Para uma lista completa de parâmetros e valores que podem ser usados ao criar um cache, consulte a documentação do cmdlet New-AzureManagedCache .

  4. Assim que o cmdlet do PowerShell for invocado, ele pode demorar alguns minutos para que o cache seja criado. Depois que o cache tiver sido criado, o novo cache terá um status em execução e estará pronto para uso com configurações padrão, podendo ser exibido e configurado no Portal de Gerenciamento do Azure.

    Você pode monitorar o progresso da criação na janela do Azure PowerShell. Quando o cache estiver pronto para uso, o cmdlet New-AzureManagedCache exibirá as informações do cache, como é mostrado no exemplo a seguir.

    PS C:\> Add-AzureAccount
    VERBOSE: Account "user@domain.com" has been added.
    VERBOSE: Subscription "MySubscription" is selected as the default subscription.
    VERBOSE: To view all the subscriptions, please use Get-AzureSubscription.
    VERBOSE: To switch to a different subscription, please use Select-AzureSubscription.
    PS C:\> New-AzureManagedCache -Name contosocache -Location "South Central US" -Sku Basic -Memory 128MB
    VERBOSE: Intializing parameters...
    VERBOSE: Creating prerequisites...
    VERBOSE: Verify cache service name...
    VERBOSE: Creating cache service...
    VERBOSE: Waiting for cache service to be in ready state...
    
    
    Name     : contosocache
    Location : South Central US
    State    : Active
    Sku      : Basic
    Memory   : 128MB
    
    
    
    PS C:\>
    

Configurar o cache

Serviço de Cache Gerenciado dá suporte a caches nomeados, que oferecem flexibilidade para configurar diferentes opções de cache para diferentes conjuntos de dados. Cada cache tem um cache nomeado padrão e, nas ofertas de cache Standard e Premium, até nove caches nomeados adicionais podem ser configurados. Cada cache nomeado tem suas próprias configurações individuais, como alta disponibilidade, notificações e políticas personalizadas de remoção e expiração. As configurações de caches nomeados são definidas no Portal de Gerenciamento, na guia Configurar do Cache.

Named Caches in Windows Azure Cache Service

A tabela a seguir lista as diferenças nas configurações de cache entre Serviço de Cache Gerenciado e Cache Compartilhado.

Recurso Suporte Serviço de Cache Gerenciado Suporte Cache Compartilhado

Nome

Um cache padrão é configurado e, nas ofertas de cache Standard e Premium, até nove caches nomeados adicionais podem ser configurados, se desejado.

Somente cache padrão.

Alta disponibilidade

Fornece alta disponibilidade para os itens no cache. Se os itens são perdidos devido a uma falha, cópias de backup dos itens no cache ainda ficam disponíveis.

A alta disponibilidade está disponível nas ofertas de cache Standard e Premium e não está disponível na oferta de cache Básico. Para obter mais informações, consulte Ofertas de Cache para Serviço de Cache Gerenciado do Azure e Alta Disponibilidade para Serviço de Cache Gerenciado do Azure.

Sem alta disponibilidade.

Notificações

As notificações permitem que seu aplicativo receba notificações assíncronas quando várias operações de cache ocorrem no cache.

As notificações estão disponíveis nas ofertas de cache Standard e Premium, mas não na oferta de cache Basic. Para obter mais informações, consulte Ofertas de Cache para Serviço de Cache Gerenciado do Azure e Notificações para Serviço de Cache Gerenciado do Azure.

Sem suporte.

Política de Remoção

As opções são Ativado, que usa um algoritmo LRU (menos utilizado recentemente) para determinar quais itens devem ser removidos, ou Desativado. O padrão é Ativado.

Somente LRU.

Tempo (min)

A expiração padrão para itens no cache é de 10 minutos, mas é configurável. O tempo de expiração para itens individuais adicionados ao cache também pode ser especificado usando sobrecargas de Adicionar e Colocar quando os itens são adicionados ao cache. Tempo (min.) opera em conjunção com Política de Expiração para determinar quando os itens expirarão.

A expiração padrão é de 24 horas e não é configurável. O tempo de expiração para itens individuais adicionados ao cache pode ser configurado usando sobrecargas de Adicionar e Colocar quando os itens são adicionados ao cache.

Política de Expiração

Existem três tipos de Política de Expiração: Nunca, Absoluto e Deslizante. Quando Absoluta é especificado, o intervalo de expiração especificado por Tempo (min) começa quando um item é adicionado ao cache. Quando Deslizante é especificado, o intervalo é redefinido cada vez que um item é acessado no cache. Quando Nunca é especificado, Tempo (min) deve ser definido como 0 e os itens não expiram. O padrão é Absoluta.

Para obter mais informações, consulte Expiração e Remoção para Serviço de Cache Gerenciado do Azure.

A política de expiração é absoluta. O intervalo de expiração começa quando itens são adicionados ao cache.

Para definir Serviço de Cache Gerenciado configurações para corresponder mais de perto às configurações de Cache Compartilhado padrão, use as configurações a seguir.

  • Política de Expiração definida como Absoluta

  • Tempo (min) definido como 1440

  • Notificações definidas como Desativadas (configurável para as ofertas de cache Standard e Premium, sempre desativadas para a oferta de cache Basic)

  • Conjunto de alta disponibilidade para desabilitado (configurável para as ofertas de cache Standard e Premium, sempre desabilitada para a oferta de cache Básico)

  • Remoção configurada como Ativada

Configurar os clientes de Cache

Tendo criado e configurado o cache, a próxima etapa é adicionar a configuração e as referências necessárias para que os clientes de cache possam acessá-lo. Serviço de Cache Gerenciado dá suporte aos seguintes clientes.

  • Site do Azure

  • Função web e função de trabalho dos serviços de nuvem do Azure

  • Máquinas Virtuais do Azure

Para configurar os clientes de cache, execute as etapas a seguir com cada cliente.

  • Remover a configuração de cache compartilhado

  • Configurar um cliente de cache usando o pacote NuGet de cache

Remover a configuração de cache compartilhado

Antes que os aplicativos cliente possam ser configurados para Serviço de Cache Gerenciado, as referências de configuração e assembly de Cache Compartilhado existentes devem ser removidas. Se Cache Compartilhado foi configurado usando o pacote Cache Compartilhado NuGet, a configuração poderá ser removida desinstalando o pacote Cache Compartilhado NuGet; caso contrário, ele deverá ser removido manualmente.

  • Desinstalar o pacote NuGet de cache compartilhado

  • Remover manualmente a configuração de cache compartilhado

Desinstalar o pacote NuGet de cache compartilhado

Para desinstalar o pacote Cache Compartilhado NuGet, clique com o botão direito do mouse no projeto cliente no Gerenciador de Soluções e escolha Gerenciar pacotes NuGet. Selecione o nó Pacotes instalados e digite Cache na caixa Pesquisar pacotes instalados. Selecione Cache Compartilhado do Azure, clique em Desinstalar e, em seguida, clique em Fechar.

Uninstall Shared Caching NuGet Package

Observação

Se não houver nenhum pacote Cache Compartilhado do Microsoft Azure NuGet na lista, clique em Fechar e siga as etapas em Remover manualmente a configuração de Cache Compartilhado.

Desinstalar o pacote Cache Compartilhado NuGet remove os assemblies Cache Compartilhado e as entradas Cache Compartilhado no app.config aplicativo cliente ou web.config no aplicativo cliente. Como algumas configurações personalizadas podem não ser removidas ao desinstalar o pacote NuGet, abra o web.config ou o app.config e certifique-se de que os elementos a seguir foram completamente removidos.

  • Verifique se a entrada dataCacheClients é removida do elemento configSections. Não remova todo o elemento configSections; remova apenas a entrada dataCacheClients, se estiver presente.

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • Verifique se a seção dataCacheClients é removida. A seção dataCacheClients será semelhante ao exemplo a seguir.

    <dataCacheClients>
      <dataCacheClient name="default">
        <hosts>
          <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" />
        </hosts>
    
        <securityProperties mode="Message">
          <messageSecurity 
            authorizationInfo="Your authorization token will be here.">
          </messageSecurity>
        </securityProperties>
      </dataCacheClient>
    </dataCacheClients>
    

Depois que a configuração Cache Compartilhado for removida, você poderá configurar o cliente de cache, conforme descrito na seção Configurar um Cliente de Cache a seguir usando a seção pacote Caching NuGet.

Remover manualmente a configuração de cache compartilhado

Para remover manualmente a configuração Cache Compartilhado, você deve remover as referências de assembly Cache Compartilhado e a configuração de Cache Compartilhado de app.config ou web.config.

Para remover as referências do assembly Cache Compartilhado, selecione o projeto cliente de cache no Gerenciador de Soluções e expanda a pasta Referências. Para cada assembly na lista a seguir, clique com o botão direito do mouse na pasta Referências no Gerenciador de Soluções e escolha Remover. Se o cliente for um projeto web, remova também Microsoft.Web.DistributedCache.

  • Microsoft.ApplicationServer.Caching.Client

  • Microsoft.ApplicationServer.Caching.Core

  • Microsoft.WindowsFabric.Common

  • Microsoft.WindowsFabric.Data.Common

Para remover a configuração de Cache Compartilhado, abra o web.config projeto do cliente ou app.config do cache e remova os dois itens a seguir.

  • Remova a entrada dataCacheClients do elemento configSections. Não remova todo o elemento configSections; remova apenas a entrada dataCacheClients, se estiver presente.

    <configSections>
      <!-- Existing sections omitted for clarity. -->
      <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    </configSections>
    
  • Remova a seção dataCacheClients, que será semelhante à do exemplo a seguir.

    <dataCacheClients>
      <dataCacheClient name="default">
        <hosts>
          <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" />
        </hosts>
    
        <securityProperties mode="Message">
          <messageSecurity 
            authorizationInfo="Your authorization token will be here.">
          </messageSecurity>
        </securityProperties>
      </dataCacheClient>
    </dataCacheClients>
    

Tendo removido esses itens, você poderá seguir as etapas descritas na próxima seção para configurar seu cliente de cache.

Configurar um cliente de cache usando o pacote NuGet de cache

Serviço de Cache Gerenciado fornece um pacote NuGet para adicionar as referências de configuração e assembly necessárias para permitir que os clientes de cache acessem um cache.

Importante

Antes de configurar o cliente de cache usando o pacote Serviço de Cache Gerenciado NuGet, verifique se a configuração Cache Compartilhado é completamente removida do web.config projeto ou app.config do cliente, conforme descrito na seção anterior.

Importante

Estas etapas exigem a versão 2.6.40627.9000 ou superior do gerenciador de pacote NuGet. Para instalar o NuGet Gerenciador de Pacotes mais recente, consulte NuGet Gerenciador de Pacotes.

Para usar o pacote Serviço de Cache Gerenciado NuGet, clique com o botão direito do mouse no projeto cliente no Gerenciador de Soluções e escolha Gerenciar pacotes NuGet.

Selecione Cache do Azure, clique em Instalar e, em seguida, clique em Aceito. Depois que o pacote for instalado no projeto cliente, clique em Fechar para fechar a janela Gerenciar Pacotes NuGet.

Observação

Se Cache do Azure não aparecer na lista, digite WindowsAzure.Caching na caixa de texto Pesquisar Online.

Windows Azure Cache NuGet Package

Quando o pacote Serviço de Cache Gerenciado NuGet é instalado em um projeto cliente, ele adiciona as referências de configuração e assembly necessárias para que o aplicativo cliente possa acessar o cache.

Vários itens são adicionados ao arquivo web.config ou app.config do projeto cliente.

  1. Duas seções são adicionadas ao configSections, denominadas dataCacheClients e cacheDiagnostics.

    <!-- Non-cache sections omitted for space -->
      <configSections>
        <section name="dataCacheClients" 
            type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" 
            allowLocation="true" 
            allowDefinition="Everywhere" />
    
        <section name="cacheDiagnostics" 
            type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon" 
            allowLocation="true" 
            allowDefinition="Everywhere" />
      </configSections>
    
  2. Uma seção dataCacheClients é adicionada à seção configuration.

    <!-- Non-cache sections omitted for space -->
      <dataCacheClients>
        <dataCacheClient name="default">
          <!--To use the in-role flavor of Azure Caching, set identifier to be the cache cluster role name -->
          <!--To use the Azure Caching Service, set identifier to be the endpoint of the cache cluster -->
          <autoDiscover
            isEnabled="true" 
            identifier="[Cache role name or Service Endpoint]" />
          <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
          <!--Use this section to specify security settings for connecting to your cache. 
              This section is not required if your cache is hosted on a role that is a part 
              of your cloud service. -->
          <!--<securityProperties mode="Message" sslEnabled="false">
            <messageSecurity authorizationInfo="[Authentication Key]" />
          </securityProperties>-->
        </dataCacheClient>
      </dataCacheClients>
    

    Substitua [Nome da função cache ou ponto de extremidade de serviço] pela URL do ponto de extremidade que é exibida no Painel de Cache no Portal de Gerenciamento.

    Endpoint URL for Windows Azure Cache Service
    Neste exemplo, o cache é chamado applicationcache e a URL do ponto de extremidade é applicationcache.cache.windows.net.

    <autoDiscover isEnabled="true" identifier="applicationcache.cache.windows.net" />
    

    Descompacte a seção securityProperties e substitua [Chave de Autenticação] pela chave de autenticação.

    <!--Use this section to specify security settings for connecting to your cache. 
        This section is not required if your cache is hosted on a role that is a part 
        of your cloud service. -->
    <!--<securityProperties mode="Message" sslEnabled="false">
      <messageSecurity authorizationInfo="[Authentication Key]" />
    </securityProperties>-->
    

    A chave de autenticação pode ser encontrada no Portal de Gerenciamento clicando em Gerenciar Chaves no painel de cache.

    Manage Access Keys for Windows Azure Cache Service

    Aviso

    Essas configurações devem ser definidas corretamente ou os clientes não poderão acessar o cache.

Para projetos de serviços de nuvem, o pacote Serviço de Cache Gerenciado NuGet também adiciona uma configuração ClientDiagnosticLevel à ConfigurationSettings função de cliente de cache em ServiceConfiguration.cscfg. O exemplo a seguir é a WebRole1 seção de um ServiceConfiguration.cscfg arquivo com um ClientDiagnosticLevel de 1, que é o ClientDiagnosticLevel padrão.

<Role name="WebRole1">
  <Instances count="1" />
  <ConfigurationSettings>
    <!-- Other settings omitted for space... -->
    <Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
  </ConfigurationSettings>
</Role>

Observação

Para obter mais informações sobre níveis de diagnóstico de cache, consulte Sobre ClientDiagnosticLevel para Serviço de Cache Gerenciado do Azure.

Além de adicionar a configuração necessária, o pacote Serviço de Cache Gerenciado NuGet também adiciona as referências de assembly a seguir.

  • Microsoft.ApplicationServer.Caching.Client.dll

  • Microsoft.ApplicationServer.Caching.Core.dll

  • Microsoft.ApplicationServer.Caching.AzureCommon.dll

  • Microsoft.ApplicationServer.Caching.AzureClientHelper.dll

  • Microsoft.WindowsFabric.Common.dll

  • Microsoft.WindowsFabric.Data.Common.dll

Em um projeto Web, a seguinte referência a assembly também é adicionada.

  • Microsoft.Web.DistributedCache.dll

Observação

Serviço de Cache Gerenciado e Cache Compartilhado compartilham a mesma API e, embora os nomes de assembly sejam os mesmos, os próprios assemblies são diferentes e estão em locais diferentes. O pacote Serviço de Cache Gerenciado NuGet removerá as referências de assembly Cache Compartilhado e adicionará as referências corretas de assembly Serviço de Cache Gerenciado. Os assemblies Serviço de Cache Gerenciado estão localizados na C:\Program Files\Microsoft SDKs\Azure\.NET SDK[SDK Version]\ref\Caching pasta.

Migrar o cache de sessão ASP.NET e saída de página

Depois que seus projetos Web ASP.NET são migrados de Cache Compartilhado do Microsoft Azure para Serviço de Cache Gerenciado conforme descrito em Configurar os Clientes de Cache, apenas alterações mínimas são necessárias para habilitar o armazenamento ASP.NET Estado da Sessão ou a Saída da Página Caching no cache. Para habilitar o armazenamento do estado da sessão ASP.NET no cache, adicione a seguinte seção a system.web em web.config.

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" useBlobMode="true" dataCacheClientName="default" />
  </providers>
</sessionState>

Observação

Se sua ASP.NET função Web já estiver configurada para usar o Provedor de Estado de Sessão para cache, essa seção já estará presente e nenhuma alteração será necessária.

Atualize cacheName para especificar o cache que contém o estado da sessão. Use default para especificar o cache padrão.

Para habilitar o armazenamento do cache de saída de página no cache, adicione a seguinte seção a system.web.

<caching>
  <outputCache defaultProvider="DistributedCache">
    <providers>
      <add name="DistributedCache" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" />
    </providers>
  </outputCache>
</caching>

Observação

Se sua ASP.NET função Web já estiver configurada para usar o Provedor de Cache de Saída para cache, essa seção já estará presente e nenhuma alteração será necessária.

Atualize cacheName para especificar o cache que contém o estado da sessão. Use default para especificar o cache padrão.

Adicione uma diretiva OutputCache a cada página cuja saída você deseja armazenar no cache.

<%@ OutputCache Duration="60" VaryByParam="*" %>

Neste exemplo, os dados da página armazenados em cache permanecem no cache por 60 segundos e uma versão diferente da página é armazenada em cache para cada combinação de parâmetros. Para obter mais informações sobre as opções disponíveis, consulte a Diretiva OutputCache.

Consulte Também

Conceitos

Ofertas de cache para o serviço de cache gerenciado do Azure
Planejamento de capacidade para o serviço de cache gerenciado do Azure
Provedor de estado da sessão para o serviço de cache gerenciado do Azure
Provedor de cache de saída de página para o serviço de cache gerenciado do Azure

Outros recursos

Serviço de cache gerenciado do Azure