Na aula de ASP.NET da pos-graduacao em desenvolvimento de software, que leciono na AESO (http://www.barrosmelo.edu.br/), um aluno fez uma pergunta interessante: onde uma sessao fica evetivamente armazenada no ASP.NET? A resposta segue abaixo.
Antes de responder a essa pergunta, é importante saber que, quando a sessão é estabelecida, o servidor envia para o browser cliente um “Session ID”, que normalmente é armazenado como um cookie no cliente. Caso cookies estejam desabilitados, o servidor envia para o browser, após uma requisição, uma URL contendo a sessão de maneira embutida, que é utilizada pelo browser para executar uma nova requisição.
No servidor, é possível configurar o armazenamento de uma sessão de três maneiras diferentes:
- In-process storage: armazena a sessão em memória, no próprio processo do servidor que roda o ASP.NET. Essa é a configuração padrão. Vantagem: boa performance. Desvantagem: dificulta a implementação em cenários “web farms” (fazenda de servidores web atendendo a requisições) e um crash do processo ASP.NET invalida todas as sessões.
- Session State Service: um serviço do Windows fica responsável por gerenciar sessões. É necessário alterar o arquivo de configuração web.config de uma aplicação para utilizar esse mecanismo. Vantagens e desvantagens: o oposto do in-process storage.
- Microsoft SQL Server: armazena a sessão em um servidor SQL Server. É necessário alterar o arquivo de configuração web.config de uma aplicação para utilizar esse mecanismo. Vantagens e desvantagens: similar ao session state service, com a vantagem adicional de ter a sessão persistente mesmo que o servidor seja reiniciado, e a desvantagem de demandar licenças do SQL Server.
[]s
-- AFurtado