Início > Asp.net > Gravando a Sessão do Asp.net no Banco de Dados

Gravando a Sessão do Asp.net no Banco de Dados

15 de julho de 2009 Deixe um comentário Go to comments

Olá, se você trabalha em um ambiente webfarm provavelmente deve já pensou em compartilhar a sessão de uma aplicação para mais de um servidor. Neste post estarei demonstrando como gravar uma sessão do asp.net no banco de dados, desta forma você poderá compartilhar sua sessão em vários webserver e ainda conseguir restaurar a sessão de um usuário, mesmo que  o serviço do IIS pare.

Antes de começar, irei disponibilizar alguns links que encontrei na internet para quem esteja pensando implantar um ambiente webfarm, os links falam justamente disso, são eles:

                – Para montar um ambiente webfarm, você irá precisar conhecer o NLB, saiba mais clicando aqui.

                – O Steven Schofield escreveu um artigo interessante, veja -> http://www.iislogs.com/articles/ADWebfarm/

                Nota:     Quando falamos de gravar a sessão da aplicação no banco de dados, estamos falando de maior segurança e disponibilidade para os  websites, uma vez que estamos centralizando as informações (session) e registrando fisicamente,  no entanto,  por outro lado temos  também um sistema com uma performance inferior a uma session na memória, uma vez que ao optar gravar a session no banco automaticamente criamos mais I/O de discos e etc, por isso toda solução deve ser analisada o custo/beneficio de sua implantação.

 

 

O Asp.Net suporta várias opções de armazenamento de dados da sessão, estas opções são identificadas por um valor chamado SessionStateMode, vamos ver alguns modos disponíveis:

Inproc – Armazena a sessão na memória do servidor web. (Padrão)
StateServer – Armazena uma sessão no processo chamado Asp.Net State Service, isso garante que a sessão seja preservada caso o aplicativo web seja reiniciado e também disponibiliza a sessão para vários servidores web em um web farm. Esta opção também é recomendada caso não queira gravar a sessão no banco de dados, no final do post irei demostrar como utilizar a mesma.
SqlServer – Armazena uma sessão no banco de dados Sql Server.  Isso garante que a sessão seja preservada se o aplicativo web seja reiniciado e também faz a sessão disponível para outros servidores web da webfarm.
Custom  – Permite você especificar o seu provedor de armazenamento da sessão. Exemplo: No caso de você desejar salvar a sessão em outro banco de dados (não seja SQL Server) será esta opção que irá te auxiliar.
Off – Desativa a sessão.

 

Agora que vimos os modos de SessionState, iremos utilizar uma ferramenta que do próprio .Net Framework que irá nos auxiliar a criar a base de dados do SQL Server para armazenar os dados.

Asp.Net  SQL Server Registration Tool:

          O Asp.Net SQL Server Registration Tool é utilizado para criar os banco de dados que serão utilizados pelo providers do Asp.Net, adicionando ou removendo opções existentes de um database. O aspnet_regsql.exe pode ser localizado no seguinte diretório:  [drive:]\%windir%\Microsoft.NET\Framework\version

     Você pode rodar o Aspnet_regsql.exe tanto pelo wizard do winform quanto pelo prompt de comando passando argumentos na linha de comando. Para nosso exemplo iremos utilizar a linha de comando, por isso veja a tabela de comandos:

Para saber mais veja -> http://msdn.microsoft.com/en-us/library/ms229862(VS.80).aspx

Com base nas informações acima, digite a seguinte linha de comando :

aspnet_regsql.exe -S <Servidor> -E -ssadd -sstype p

 

Altere a tag <Servidor> para o nome do seu servidor, na linha de comando acima, estamos criando o banco de dados AspState com suas tabelas default além de estarmos configurando o tipo de permissão integrada.

Agora no web.config de nossa aplicação iremos inserir a seguinte dentro  <system.web>

<sessionState mode="SQLServer" sqlConnectionString="data source=itgvs06\SqlExpress; Initial Catalog=BBA_aspstate; Integrated Security=True" timeout="20" allowCustomSqlDatabase="true"/>

 

E se ao invés de SQLServer eu estivesse utilizando o mode StateServer, o web.config ficaria da seguinte forma:

<sessionState mode="StateServer"

stateConnectionString="tcpip=SampleStateServer:42424"

timeout="20"/>

 

Para saber mais, veja-> http://msdn.microsoft.com/en-us/library/ms178586.aspx

 

Bom pessoal acreditem, é bem simples, no entanto irei deixar abaixo alguns outros links, principalmente se sua intenção seja compartilhar a sessão em outros servidores da webfarm.

Compartilhar Session entre Asp e Asp.Net -> http://msdn.microsoft.com/en-us/library/aa479313.aspx

Explorando Session State -> http://www.codeproject.com/KB/aspnet/ExploringSession.aspx

 

Para baixar o código do exemplo acima clique aqui.

Espero que esta informação te ajude no dia-a-dia.

 

Abraço,

 

Nelson Borges

 

Categorias:Asp.net
  1. Nenhum comentário ainda.
  1. 29 de novembro de 2011 às 1:04

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: