Session State
Vou falar um pouco dos tipos de status existentes nas sessions geradas na aplicação
Por Que Se Preocupar?
Os tipos de session possuim certas limitações que devem ser consideradas, após analisar o nível de acesso que o sistema terá ao longo do tempo, o tipo de hospedagem que este terá (Caso seja por terceiros), trâfego absoluto que o site tem.
Tudo isto deve ser levado em consideração na hora de utilizar Session em um sistema, a seguir ficará mais claro os porquês desta preocupação.
Quais são os tipos ?
Os tipos são:
Inproc: Considerado o mais rápido dos tipos existente, por manter objetos em memória junto com o processo do ASP.Net.
StateServer: Aqui toda a sessão é serializada, assim tendo uma perca de performace quando comparado ao InProc, entretanto existe a possibilidade de enviar esta sessão para outro servidor tornar-se resposável pelo armazenamento destas informações, podendo assim ser uma boa escolha. Largamente recomendado quando existe um grande fluxo de usuário no site.
Para utilizar este serviço, procure nos serviços do Windows o processo chamado: ASP.NET State Services, para tal digite no executar, services.msc.
Para descobrir a porta do servidor qual será configurado para armazenar é necessário encontrar nos registros o mesmo.
SQLServer: Sim, a session é armazenada em banco de dados, e possuí também certa desvatagem performática, quando comparado ao Inproc, entretanto esta forma permite que a sessão seja recuperada desde que dentro da “Validade” da sessão gerada.
Para informar o tempo que será válida a sessão, assim como qual servidor atendará no armazenamento das informações das sessões ou qual o servidor e instâncias que será utilizado.
Web-Config
Para cada tipo respectivamente, segue como deve ser declarado no Web.Config.
Inproc:
<system.web>
<sessionState
mode="InProc"
timeout="1"
cookieless="false">
</sessionState>
</system.web>
StateServer:
<sessionState mode="StateServer" cookieless="false" stateNetworkTimeout="20" stateConnectionString="127.0.0.1:42424"> </sessionState>
SqlServer
<sessionState mode="StateServer" timeout="20" cookieless="false" sqlConnectionString="Data Source=127.0.0.1;Trusted_Connection=Yes;"> </sessionState>
Usando o Cookieless igual a "False", quer dizer que será gerado junto com a sessão Cookies.
Eu iria listar vantagem e desvantagens de cada um, mas isso tornaria uma análise extremamente pessoal, e como foi citado inicialmente isso deve ser utilizado após a análise das necessidades do sistema.
Para buscarem mais detalhes sobre este assunto:
http://www.codeproject.com/KB/aspnet/ExploringSession.aspx
Obrigado.
Nenhum Post Relacionado.