Utilizando variáveis de sessão com o Windows Azure

Uma das alterações necessárias para migrar uma aplicação para o Windows Azure é a utilização de variáveis de sessão, isso porque ao utilizar mais de uma instância, sua aplicação utilizará automaticamente um load balancer (balanceador de carga). E ao utilizar um load balancer, não tem com garantir que a requisição do usuário vai utilizar sempre a mesma máquina.

Umas das maneiras de resolver esse problema é utilizar Windows Azure Cache, nesse artigo iremos configurar a aplicação TailspinSpyworks para utilizar o Windows Azure Cache, no final do artigo você conseguirá baixar o projeto com as alterações necessárias aplicadas.

Passo 1 – Provisionar o serviço de Cache

Neste passo você criará uma nova subscrição para usar Windows Azure Caching.

  1. Acesse pelo Internet Explorer o portal do Windows Azure Platform https://windows.azure.com.  Se necessário, faça login com sua conta do Windows Live.
  2. No  Barramento de serviços, Controle de acesso e Cache (Service Bus, Access Control & Caching), painel do lado esquerdo, clique em Cache.

 

  1. Clique no botão Novo namespace de Serviço (New Namespace) para criar uma nova instancia de cache.

 

 Preencha os dados solicitados na janela "Criar um novo namespace de serviço" (Cache Service Namespace) com:

  • Nome;
  • Escolha um país/região (OBS: Atenção para deixar no mesmo servidor das roles de compute);
  • Assinatura que será utilizada;
  • Cota do tamanho de cache (Connection Pack Size) e clique em Criar Namespace.
  1. Localize a nova entrada na lista dos serviços e aguarde o Status do namespace ficar Ativo.

 

 Status ativo do Namespace

 

  1. Clique no namespace criado, e  no painel de propriedades (a direita da tela) localize e copie os valores dos campos URL do serviço (Service URL)Porta do serviço (Service Port).
               

  1. Clique no botão Exibir  (View) do  campo Token de  Autenticação (Authentication Token) do painel de propriedades. Na janela Token de Autenticação (Authentication Token) clique no botão Copiar para a área de transferência (Copy to Clipboard). Para facilitar os próximos passos, use o notepad para guardar as      configurações.

 

 

  1. Clique em Exibir Configuração de cliente (View Client Configuration), veja imagem abaixo e selecione todo o texto da janela Configuração do Cliente (Client Configuration). Digite <CTRL + C> para copiar e cole o texto no notepad para usar nos próximos passos. Este XML tem as configurações necessárias para acessar o Windows Azure Caching Access Control.

 

 Copiando o XML de configuração do Windows Azure Cache.

 

Passo 2 – Configurando o Session State provider da aplicação para usar o Windows Azure AppFabric Caching

Neste passo você vai alterar o Session State provider para usar o mecanismo de Cache do Windows Azure. Este passo requer que você adicione algumas referências no projeto TailspinSpyworks e altere o arquivo de configuração Web.config.

  1. Execute o Visual Studio como administrador. Acesse Start | All Programs | Microsoft Visual Studio e clique com o botão direito do mouse no atalho para o Microsoft Visual Studio e escolha Run as      administrator;
  2. Se a janela User Account Control aparecer, clique Yes.
  1. Na opção File do menu, escolha Open e em seguida, selecione Project/Solution.
  1. Na janela Open Project, procure o arquivo TailspinSpyworks.sln para abrir a solução.
  1. No Solution Explorer, clique com o botão direito do mouse no projeto TailspinSpyworks | e selecione Add Reference | selecione a aba Browse. Navegue até a pasta %Program Files%\Windows Azure SDK\v1.6\Cache\refe selecione os assemblies:
    • Microsoft.ApplicationServer.Caching.Client;
    • Microsoft.ApplicationServer.Caching.Core;
    • Microsoft.Web.DistributedCache.

Em segida clique em OK.

 

  1. Garanta que os assemblies façam parte do pacote. Para fazer isto, clique com o botão da direita do mouse na referencia Microsoft.ApplicationServer.Caching.Client | Properties. Na janela de propriedades, verifique se a opção Copy Local é igual a True. Repita este passo para os outros assemblies, incluídos no passo anterior.

 

  1. Abra o arquivo Web.config, localizado na raiz do projeto TailspinSpyworks.
  2. Volte para o notepad com as configurações do Windows Azure Cache e copie o texto dentro da tag ConfigSections

 

  1. Volte para o Visual Studio e cole a sessão dentro da tag configuration do web.config. Garanta que este seja o primeiro elemento dentro da tag configuration.

 

<configuration>
   <configSections>
       <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
                  allowLocation="true" allowDefinition="Everywhere"/>
     </configSections>
.....

</configuration>      

  1. Volte para o notepad e copie a configuração dataCacheClients.

  1. Volte para o Visual Studio e cole a configuração que você copiou logo após a tag configSections como mostra abaixo.

     </configSections>
      
     <dataCacheClients>
       <dataCacheClient name="default">
         <hosts>
           <host name="[SERVICE-HOST-NAME]" cachePort="22233" />
         </hosts>
      
         <securityProperties mode="Message">
           <messageSecurity
             authorizationInfo="[AUTHORIZATION INFO]">
           </messageSecurity>
         </securityProperties>
       </dataCacheClient>
     </dataCacheClients>
       
     <dataCacheClients>
       <dataCacheClient name="SslEndpoint">
         <hosts>
           <host name="[SERVICE-HOST-NAME]" cachePort="22243" />
         </hosts>
      
         <securityProperties mode="Message">
           <messageSecurity
             authorizationInfo="[AUTHORIZATION INFO]">
           </messageSecurity>
         </securityProperties>
       </dataCacheClient>
     </dataCacheClients>

  1. A ultima sessão que você  precisa configurar é a sessionState provider, e para fazer isto, volte  para o notepad e copie o elemento sessionState.

 

  1. Volte para o Visual Studio e cole o elemento copiado dentro da sessão system.web.

     ...
     <system.web>
      
       <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>
      

  <compilation debug="true" targetFramework="4.0">

  1.  Digite <CTRL + S> para salvar o arquivo Web.config.

Agora a aplicação já está pronta para utilizar o Windows Azure Cache como mecanismo controle de sessão. Para testar para pressionar <F5> no Visual Studio e navegar pelo site.

Faça download da aplicação, configurada clicando aqui.

Este artigo foi realizado com base em um Hands-on-Lab realizado pelo Rogério Cordeiro.

Obrigado, e continue migrando.

Vinícius

Tags:

Follow the Discussion

Comments Closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.