Introdução
Uma aplicação Web trabalha diferente de uma Desktop. Em aplicações Web um cliente faz uma requisição a uma página,o servidor realiza o processamento da solicitação e devolve o resultado para o cliente (requisitante), isso sob um protocolo sem armazenamento de estado, denominado HTTP. Isso quer dizer que a requisição HTTP atual não precisa da requisição anterior (caso exista) para dar continuidade. Cada requisição HTTP é independente da outra. Por vezes é necessário guardar informações temporárias no servidor, a fim de que quando o cliente fizer novamente a conexão com o servidor possamos descobrir quem é este requisitante.
A cada nova requisição o ASP.NET cria um novo objeto Session, que se torna parte do contexto e fica disponível em qualquer página, no contexto desta requisição. O ASP.NET cria um identificador e o reconstitui quando chega uma nova solicitação contendo um identificador de sessão válido. Esse identificador pode ser um Cookie por exemplo.
O objeto Session é um dicionário de chave-valor. Você pode atribuir a ele qualquer objeto com uma chave, assim seu objeto estará na próxima requisição que chegar e você recuperará seu objeto com o nome da chave que criou. Criando uma sessão forma simples:
1.
Context.Session[
"MinhaSessao"
]
=
"Este Texto Será Adicionado na Sessão"
;
Recuperando a sessão
1.
string
TextoSessao = (
string
)Session[
"MinhaSessao"
];
Armazenamento
O ASP.NET oferece várias opções de gerenciamento de sessão:
- Não utilizar: Quando ele é desabilitado sua aplicação aumenta desempenho por que não precisa carregar o estado de sessão toda vez que a página é carregada. Neste modo você não pode associar um dado de usuário a uma página.
- IN PROC: Esta é a opção padrão. A sessão será gerenciada no mesmo processo da página. Muito rápido, esse modo fica em memória do servidor, mas se o IIS ou o servidor forem reiniciados você perderá a sessão. Este modo você não poderá usar em servidores com WebFarm.
- Servidor de Estado: Neste modo o ASP.NET direciona o gerenciamento de sessão para um processo Windows Service separado em uma máquina. Este modo você pode utilizar em servidores WebFarm. Tem como desvantagem a necessidade de estabelecer trafico de rede com o servidor de estado.
- Sessão SQL SERVER: Neste modo o ASP.NET usa um banco de dados SQL SERVER para armazenar a sessão. Este modo é seguro por que se o servidor pode ser reiniciado sem que se perca a sessão no retorno da requisição. As informações ficam armazenadas em tabelas de um banco de dados no SQL SERVER.