Qual é a diferença entre SessionState e ViewState?

117

Qual é a diferença entre SessionState e ViewState no ASP.NET?

Natrium
fonte
7
Tentei o Google, mas não consegui encontrar uma visão geral.
Natrium

Respostas:

143

O estado da sessão contém informações que pertencem a uma sessão específica (por um determinado cliente / navegador / máquina) com o servidor. É uma maneira de rastrear o que o usuário está fazendo no site ... em várias páginas ... em meio à ausência de estado da web. por exemplo, o conteúdo do carrinho de compras de um determinado usuário são dados da sessão. Os cookies podem ser usados ​​para o estado da sessão.
O estado de exibição, por outro lado, contém informações específicas de uma página da web em particular. Ele é armazenado em um campo oculto para que não seja visível para o usuário. É usado para manter a ilusão do usuário de que a página se lembra do que ele fez na última vez - não deixe uma página limpa toda vez que ele postar de volta. Verifique esta página para mais informações .

Gishu
fonte
96

O estado da sessão é salvo no servidor, ViewState é salvo na página.

O estado da sessão geralmente é limpo após um período de inatividade do usuário (nenhuma solicitação ocorreu contendo o ID da sessão nos cookies de solicitação).

O estado de exibição é postado na postagem subsequente em um campo oculto.

pense antes de decodificar
fonte
30
+1 Sim - ponto importante que o ViewState viaja para cima e para baixo entre o cliente e o servidor, mas o SessionState permanece no servidor.
Gordon Mackie JoanMiro,
1
Esta deveria ter sido a resposta oficial
Fandango68
33

SessionState

  • Pode ser persistido na memória, o que o torna uma solução rápida. O que significa que o estado não pode ser compartilhado no Web Farm / Web Garden.
  • Pode ser persistido em um Banco de Dados, útil para Web Farms / Web Gardens.
  • É apagado quando a sessão termina - geralmente após 20 minutos de inatividade.

ViewState

  • É enviado para frente e para trás entre o servidor e o cliente, ocupando largura de banda.
  • Não tem data de validade.
  • É útil em um Web Farm / Web Garden
Jesper Fyhr Knudsen
fonte
14

Uso: se você vai armazenar informações que deseja acessar em diferentes páginas da web, pode usar SessionState

Se você deseja armazenar informações que deseja acessar na mesma página, você pode usar Viewstate

Armazenamento O Viewstate é armazenado na própria página (em texto criptografado), enquanto o Sessionstate é armazenado no servidor.

O SessionState será limpo nas seguintes condições

  1. Apagado pelo programador
  2. Apagado pelo usuário
  3. Tempo esgotado
Cyril Gupta
fonte
5
ViewStates não são criptografados. Eles apenas parecem assim, mas podem ser facilmente decodificados.
Vandel212 de
5

A sessão é usada principalmente para armazenar dados específicos do usuário [dados específicos da sessão]. No caso de sessão, você pode usar o valor para toda a sessão até que ela expire ou o usuário abandone a sessão. Viewstate é o tipo de dado que tem escopo apenas na página em que é usado. Você não pode ter valores de viewstate acessíveis a outras páginas, a menos que você transfira esses valores para a página desejada. Além disso, no caso de viewstate, todos os dados de controle do lado do servidor são transferidos para o servidor como par de valores-chave em __Viewstate e transferidos de volta e renderizados para o controle apropriado no cliente quando ocorre o postback.

Rahul
fonte