Escrito em July 8th, 2009 as 9:00 am por Raphael Silva Ferreira

4 Comentários

Como armazenar uma informação temporária e que preciso acessar rapidamente? Qual o desenvolvedor que nunca se deparou com tal pergunta ou não sabia o que seria melhor para resolver seu problema.

Session, ViewState e Cache são três grandes ferramentas que podem nos ajudar nesta tarefa. Mas você deve estar se perguntando qual deles é a melhor solução? Depende da situação e este artigo visa lhe levar até o caminho da melhor solução.

Session (sessão) é o período de tempo em que o usuário interage com a aplicação. Em termos de programação a sessão é a memória em forma de dicionário ou ainda de uma tabela hash. Por exemplo, a sessão pode ser um conjunto de valores-chave que podem ser definidos e lidos por um usuário, durante a utilização da aplicação web pelo mesmo.

A Session por default no .NET  possui um timeout de vinte minutos podendo ser redefinida (este caso será abordado num próximo artigo).  Estes vintes minutos são contados a partir do momento em que o usuário deixa de interagir com o sistema, enquanto isso não ocorre este tempo não é válido.

ViewState é um conjunto de informações escondidas mantidas pela página ASP.NET. Ele monitora as mudanças feitas na página durante o post back.

Nas páginas do ASP.NET o ViewState é habilitado por default para todos os componentes do .NET Framework e pode ser visto (criptografado) ao término do carregamento da página .aspx clicando-se com o botão direito do mouse e em seguida em “Exibir Código Fonte”, após isto basta localizar a tag “_VIEWSTATE”.

Cache também é um tipo de memória, no caso do ASP.NET é a memória da máquina/servidor onde o código fonte está em execução.

Pode-se verificar a ação do Cache neste momento, ao entrar no site pela primeira vez o carregamento da página foi um pouco lento e se nesse exato momento você apertar o botão F5 do seu teclado perceberá que esta página irá carregar bem mais rápido do que a primeira vez. Isto se deve a ação do Cache, no primeiro acesso a página o servidor é contato e os dados são recebidos pelo seu computador, que armazena estes dados no Cache permitindo assim que no futuro a ação seja executada com maior rapidez.

Vantagens:

  • Session
    • Aceita qualquer tipo de variável e pode ser acessada a todo o momento, lembrando sempre de verificar se o valor adicionado não é nulo ou se ainda a sessão não for perdida.
    • Muito boa para trafegar pequenos dados como algumas variáveis ou valores de referência.
    • ViewState
      • Excelente para quem deseja armazenar informações numa página que precisa ser recuperada de maneira rápida e prática, ou ainda algum valor que é de real importância para a página.
      • Cache
        • Rapidez na aquisição da informação uma vez que a mesma já se encontra carregada.
        • Possibilidade de configuração para estender o cachê a longos períodos como horas.

Desvantagens:

  • Session
    • Possui timeout que pode dificultar a recuperação dos dados.
    • Deve-se tomar cuidado ao adicionar valores, pois a Session não “estoura” como um array ela simplesmente sobrescreve os dados.
    • ViewState
      • Não Transporta valores entre as páginas, é único para cada página.
      • Não recria os dinamicamente os controles da página.
      • Não restaura os valores dos controles após o postback.
      • Quanto maior o ViewState mais pesada/lenta fica a página.
      • Cache
        • Possibilidade de StackOverFlow se não for bem controlado.

Várias configurações podem ser feitas para estas três ferramentas, mas estas serão abordadas junto das demonstrações nos próximos artigos.

Abraços!

Posts Relacionados:

  1. Configurando e Utilizando a Session
  2. Problema ao Utilizar o SQLCe no ASP.NET
,

4 Respostas to “Session, ViewState ou Cache o que utilizar?”


  1. Willian

    1 year ago

    Muito bem escrito este artigo. Continue falando sobre isto, pois é um assunto que dará outros artigos.

    Abraços

    Willian


  2. derekpm

    1 year ago

    Rather interesting. Has few times re-read for this purpose to remember. Thanks for interesting article. Waiting for trackback


  3. joanparker

    1 year ago

    Thanks for posting about this, I would like to read more about this topic.


  4. Kira

    2 weeks ago

    Ótimo artigo, parabéns! Pra mim foi de extrema utilidade =)

Deixa uma Resposta

znjdb32s6g