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.

 

estpagaspnetfig01.JPG

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