Configurando um provedor de estado da sessão ASP.NET (Cache do Windows Server AppFabric)

O Windows Server AppFabric oferece um provedor de estado de sessão personalizado para seus aplicativos da Web ASP.NET. Isso permite que os aplicativos da Web espalhem objetos de sessão no cluster de cache, proporcionando escalabilidade. Devido à natureza dos recursos de cache do AppFabric, os objetos que você insere em Session devem ser serializáveis.

Os procedimentos neste tópico supõem que você já tenha preparado o ambiente de desenvolvimento do seu aplicativo da Web e que tenha definido referências para os conjuntos de cache do AppFabric, e assim por diante. Para obter mais informações, consulte Preparando o ambiente de desenvolvimento do cliente de cache (Cache do Windows Server AppFabric).

Para que o seu aplicativo da Web ASP.NET use o provedor de estado da sessão do AppFabric, você deve adicionar os seguintes elementos ao arquivo web.config do seu aplicativo:

  • configSections: este deve ser o primeiro elemento no arquivo de configuração, abaixo da marca configuration de abertura. É necessário para que os conjuntos de cache do AppFabric funcionem.

  • dataCacheClient: esse elemento é um filho do elemento configuration. Ele é usado para configurar o cliente de cache e especificar os hosts de cache. Para obter mais informações sobre o cliente de cache, consulte Desenvolvendo um cliente de cache (cache do Windows Server AppFabric).

  • sessionState: esse elemento é um filho do elemento system.web. Ele especifica para o aplicativo da Web que ele deve usar o AppFabric para gerenciar os estados de sessão. O atributo cacheName especifica o cache nomeado que será usado. Se você armazenar dados de sessão em uma região de cache, use o atributo regionName para especificar a região.

Observação

Os objetos armazenados em uma região não terão balanceamento de carga nos hosts de cache, mas serão localizados no host de cache onde a região foi criada. Por este motivo, não é uma configuração geralmente recomendada. As regiões devem ser usadas somente quando há um requisito especial para localizar todos os objetos de sessão em um único host.

Aviso

É recomendável que você proteja o arquivo web.config usado para especificar os nomes dos hosts de cache.

Para configurar um provedor de estado de sessão do AppFabric para o seu aplicativo da Web

  1. Copie o elemento configSections do exemplo depois que executar estas etapas no arquivo web.config. Verifique se este é o primeiro elemento dentro das marcas configuration.

  2. Copie o elemento dataCacheClient do exemplo depois que executar estas etapas no arquivo web.config. Ele deve ser adicionado após o elemento configSections, dentro do elemento configuration.

    1. Configure os atributos name e cachePort dos elementos de host para que correspondam aos servidores de cache no seu ambiente. Adicione ou remova elementos de host conforme apropriado.
  3. Copie o elemento sessionState do exemplo depois que executar estas etapas no arquivo web.config. Ele deve estar posicionado dentro do elemento system.web.

  4. Determine a identidade do aplicativo da Web. Isso pode ser feito no Gerenciador do IIS nos servidores da Web. Verifique a identidade do pool de aplicativos associado ao aplicativo da Web. Conceda esse acesso do usuário ao cluster de cache usando o comando Grant-CacheAllowedClientAccount do Windows Powershell.

    Dica

    Se o pool de aplicativos dor executado como uma conta de máquina incorporada, como "NT Authority\Network Service", então você deverá conceder acesso ao cluster de cache para essa máquina. Você pode fazer isso especificando DOMAINNAME\MACHINENAME$ como a conta. Observe que "$" está anexado ao nome de máquina para indiciar que essa é a conta da máquina.

Exemplo

Este exemplo mostra como configurar um aplicativo da Web ASP.NET a fim de usar um cliente de cache para armazenar dados de sessão para um cache distribuído, denominado NamedCache1. Nesse exemplo, o cliente de cache é configurado apenas para se comunicar com um host de cache com o nome CacheServer1.

Primeiro, adicione o elemento configSections ao arquivo web.config como o primeiro elemento no elemento configuration:

<!--configSections must be the FIRST element -->
<configSections>
   <!-- required to read the <dataCacheClient> element -->
   <section name="dataCacheClient"
         type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
            Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, 
            Culture=neutral, PublicKeyToken=31bf3856ad364e35"
         allowLocation="true"
         allowDefinition="Everywhere"/>
</configSections>

Segundo, adicione o elemento dataCacheClient ao arquivo web.config, após o elemento configSections. É nesse ponto que você configura o cliente de cache para que atenda às necessidades do seu aplicativo. Para obter mais informações, consulte Definições de configuração do aplicativo (Cache do Windows Server AppFabric).

<!-- cache client -->
<dataCacheClient> 
  <!-- cache host(s) -->
  <hosts>
    <host
       name="CacheServer1"
       cachePort="22233"/>
  </hosts>
</dataCacheClient>

Depois que os elementos configSections e dataCacheClient forem adicionados, acrescente o elemento sessionState no arquivo web.config, dentro do elemento system.web. É nesse ponto que você especifica o cache que o aplicativo da Web usará para armazenar dados de estado da sessão.

Observe que se vários aplicativos da Web precisarem compartilhar o mesmo estado de sessão, deverão usar o mesmo valor de atributo sharedId. Caso contrário, você não precisará especificar o atributo sharedId.

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <!-- specify the named cache for session data -->
    <add 
      name="AppFabricCacheSessionStoreProvider" 
      type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" 
      cacheName="NamedCache1"
      sharedId="SharedApp"/>
  </providers>
</sessionState>

Quando estiver concluído, o arquivo web.config final do aplicativo da Web será semelhante ao exemplo a seguir.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
  <!--configSections must be the FIRST element -->
  <configSections>
     <!-- required to read the <dataCacheClient> element -->
     <section name="dataCacheClient"
         type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
            Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, 
            Culture=neutral, PublicKeyToken=31bf3856ad364e35"
         allowLocation="true"
         allowDefinition="Everywhere"/>
  </configSections>
  
  <!-- cache client -->
  <dataCacheClient>    
    <!-- cache host(s) -->
    <hosts>
      <host
         name="CacheServer1"
         cachePort="22233"/>
    </hosts>
  </dataCacheClient>

  <system.web>
    <sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
      <providers>
        <!-- specify the named cache for session data -->
        <add 
          name="AppFabricCacheSessionStoreProvider" 
          type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" 
          cacheName="NamedCache1"
          sharedId="SharedApp"/>
      </providers>
    </sessionState>
  </system.web>
</configuration>

Consulte também

Conceitos

Introdução a um cliente de cache (XML) do Windows Server AppFabric
Usando métodos de configuração (Cache do Windows Server AppFabric)
Conceitos de cache do Windows Server AppFabric
Desenvolvendo um cliente de cache (cache do Windows Server AppFabric)

  2011-12-05