Desenvolvimento - C#

Session, ViewState ou Cache o que utilizar?

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.

por Raphael Silva Ferreira



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

o 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.

o Muito boa para trafegar pequenos dados como algumas variáveis ou valores de referência.

· ViewState

o 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

o Rapidez na aquisição da informação uma vez que a mesma já se encontra carregada.

o Possibilidade de configuração para estender o cachê a longos períodos como horas.

                     

Desvantagens:

· Session

o Possui timeout que pode dificultar a recuperação dos dados.

o Deve-se tomar cuidado ao adicionar valores, pois a Session não “estoura” como um array ela simplesmente sobrescreve os dados.

· ViewState

o Não Transporta valores entre as páginas, é único para cada página.

o Não recria dinamicamente os controles da página.

o Não restaura os valores dos controles após o postback.

o Quanto maior o ViewState mais pesada/lenta fica a página.

· Cache

o 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!

Raphael Silva Ferreira

Raphael Silva Ferreira - Formado em Bacharelado em Ciência da Computação pela PUC-PR, atua como analista de sistemas na plataforma .NET. Desenvolve aplicações Web com C# e ASP.NET há cinco anos possuindo certificação da Microsoft MCP em .NET Framework 2.0.