Manutenção de Estado das Informações no ASP.Net
No ASP.NET existem várias formas para manter o estado das informações. O estado é o valor atual de todos os controles e variáveis do usuário atual na sessão atual. Em ambientes Web como é o caso do ASP.NET, as páginas são criadas e destruídas cada vez que o usuário solicita a mesma ao servidor, por causa dessas características, variáveis declaradas no formulário Web não mantêm o seu valor depois que a página é exibida, o que significa que quando uma página é enviada ao servidor, e em seguida, retornada para o navegador, ela é recriada do zero e o estado será perdido e todos os controles serão criados com os valores padrão.
O ASP.Net possui alguns métodos para manter o estado das informações entre as páginas, como a utilização de “Cookies” onde as informações são armazenadas na máquina do usuário, porém o usuário poderá desabilitar no Navegador a utilização de “Cookies”, ou ainda o uso das “Query Strings” onde as informações são passadas através da barra de navegação do navegador, sendo assim visível para os usuários, o que não é aconselhado quando se deseja passar informações seguradas.
O foco desse artigo é apresentar três métodos de manutenção do estado das informações no ASP.Net, como vemos na lista abaixo:
§ ViewState: armazenagem de informações em forma de campos ocultos na página;
§ Session: mantem os dados durante a visita do usuário na aplicação;
§ Application: mantem os dados disponíveis para todos os usuários da aplicação
Inicialmente vamos abordar o ViewState ou Estado de Exibição.
O estado da página e de todos os seus controles e é mantido automaticamente entre as postagens pelo ASP.Net. Dessa forma quando uma página é postada para o servidor, o estado de exibição é lido e antes da página ser restaurada para o navegador, ele é restaurado. O estado de exibição é guardado no depósito de dados através de campos ocultos (hidden fields). O valor padrão para o ViewState é true e poderá ser desativado caso não seja necessário manter o estado de exibição de uma página, melhorando dessa forma seu desempenho. Para desativar o estado de exibição de uma página, deverá ser adicionado o atributo EnableViewState com um valor igual a False na diretiva Page:
<%@ Page Language="VB" EnableViewState = "false"%>
Uma outra forma de ativar ou desativar o estado de exibição dos controles ASP.Net é através da propriedade EnableViewState.
Figura 1 – Habilitando/Desabilitando a propriedade ViewState.
O exemplo abaixo ilustra a utilização do ViewState que é usado no evento Page_Load para armazenar a data de acesso a página.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
ViewState("Acesso") = Date.Now.Date()
End If
End Sub
O Estado de Sessão (Session) permite manter o estado dos dados ao nível de usuário, ou seja, enquanto o usuário estiver conectado em uma aplicação. O objeto Session armazena os dados temporariamente para cada usuário que acessa a aplicação, assim, toda vez que um usuário abre uma página ASP.NET, o ASP.NET verifica se o usuário já possui um objeto Session, se não existir o ASP.NET criará um objeto.
O Objeto Session pode armazenar qualquer tipo de dado e normalmente é utilizado para armazenar informações que serão usadas na aplicação durante toda a visita do usuário. O tempo de vida de um objeto Session é reiniciado a cada requisição de uma página, mas este objeto só é destruído após um período de ociosidade do aplicativo Web. Você poderá também configurar um período de tempo(timeout) para expirar a sessão caso o sistema fique ocioso.
No código abaixo temos um exemplo do uso de variável de sessão, onde os dados do usuário são validados e são criados dois objetos de Sessão para armazenar o Login do usuário e o Horário que foi efetuado a entrada no sistema.
Protected Sub Button1_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
If ValidaUsuario(txtLogin.Text, txtSenha.Text) = True Then
Session("Login") = txtLogin.text
Session("HorarioLogin") = Date.Now.Date
End If
End Sub
Na ilustração abaixo, temos o evento Load de um formulário que receberá o conteúdo das variáveis de Sessão declaradas no evento Button1_Click1.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
lblUsuario.Text = "Olá " & Session("Login") & " bem vindo ao Sistema. Você efetuou login as " & Session("HorarioLogin")
End If
End Sub
Por último temos o Estado de Aplicação ou Application. Este objeto é usado para manter dados disponíveis para qualquer dos usuários da aplicação, independente do momento em que o usuário acessar a informação, armazenando as informações enquanto a aplicação existir. Neste caso, o ASP.NET cria um objeto do tipo Application na primeira vez que um usuário qualquer acessar a aplicação, e destroi o objeto quando a aplicação é reiniciada.
Para exemplificar a utilização de um objeto Application, temos o código abaixo que guarda login do usuário que acessou o sistema, mantendo dessa forma na variável de aplicação o último usuário que efetuou acesso ao sistema.
Protected Sub Page_Load(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Application("UltimoAcesso")= Session("Login")
End If
End Sub
Essas são algumas das maneiras de trabalhar com o estado das informações no ASP.NET, cabendo ao desenvolvedor analisar a melhor situação para o desenvolvimento da aplicação.
Até o próximo !
Regilan Meira