ASP .NET Web Forms - Como funciona ?


A primeira vista um Web Form se parece com uma página HTML : é um arquivo texto que contém tags que podem ser editadas em qualquer editor de texto.

Se olharmos com mais atenção veremos que um Web Form possui diversos elementos que o diferencia de uma simples página HTML ; dentre eles podemos citar :

Em páginas Web Forms os eventos associados com os controles de servidor(Server Controls) são levantados no cliente mas são tratados no Servidor Web. Desta forma a informação do evento é capturada no cliente e transmitida para o servidor via HTTP fazendo o que chamamos de uma round-trip.

Os controles Web Forms de servidor seguem um modelo padrão para tratamento de informação para cada evento. Por convenção todos os eventos passam dois argumentos:

  1. Um objeto referenciando a fonte que disparou o evento
  2. Um objeto Event contendo dados para o evento. ( geralmente do tipo System.EventArgs )

Para definir métodos para tratar eventos você precisa saber duas coisas:

Assim para tratar o evento Click do controle Button você precisa ter uma assinatura igual a :

Private Sub nome_Método(ByVal src As Object , ByVal e as EventArgs)

Como nos formulários Windows - Windows Forms - existem eventos que são disparados em uma certa seqüência quando um Web Form é iniciado ou carregado. Existem também eventos que são disparados em reposta a uma interação do usuário com o Navegador com a página renderezida. O processamento que ocorre quando um Web Form é submetido não é linear como em HTML e ASP clássico.

Assim como os Windows Forms um Web Form também dispara eventos padrão como Load , Draw e Unload mas de uma forma diferente. Quando uma página é requisitada de um Navegador cliente uma DLL que encapsula tanto as tagas nas páginas ASPX como o código página é carregada e processada.

Primeiro , o evento Init configura a página para seu estado inicial como descrito nas tags do arquivo ASPX. Se a página esta postando para ele mesma (post back) , o evento Init também restaura qualquer estado da página que pode pode ser armazenado em 'viewstate'. Se você quiser , o seu código pode tratar o evento Page_Init para depois personalizar o estado inicial da página.

A seguir o evento Load é disparado. Neste evento você pode verificar se esta é a primeira vez que a página foi carregada ou se este é uma postagem de volta de uma interação do usuário com algum controle da página. Você pode realizar alguma inicialização somente na primeira carga da página .

Na seqüência a página e renderizada para o Navegador, Alguma informação de estado (viewstate) é incluida no campo oculto da página de maneira que quando a página for chamada novamente através de um post back seu estado anterior poderá ser restaurado pela ASP .NET

A seguir , e somente se a página estiver sendo postada de volta , o evento de controle que causou o post back da página é disparado. Exemplos de evento que geram post back são : clicar em botões ou a alteração de eventos que geram autopostback como a alteração do evento CheckdChanged em um check box por exemplo.

Existe um último evento que seu código pode tratar antes da página ser descarregada: Page_Unload. Como a página já esta renderizada este evento é usado para realizar tarefas lógicas e limpeza ; após isto a classe que representa a página que esta carregada é destruida e a página é descarregada da memória do servidor.

Nota: Se você alterar seu código ou sua página ASPX , a DLL gerada dinamicamente que representa a página será gerada novamente na próxima vez que a página for requisitada. Esta DLL é armazenada no disco cada vez que ela é gerada.

Desta forma , do momento que o usuário faz a primeira requisição de um Web Form ASP.NET até o momento que o servidor envia a resposta , muitos eventos ocorrem por trás dos panos. Muitos destes eventos são transparentes pois envolvem o compilador , o processador e várias coleções do Framework.  A seguir um esquema que mostra os eventos que ocorrem durante o request e o response de uma página ASP.NET

O clico de de vida de uma requisição ASP .NET pode ser assim esquematizada:

O modelo de código em Web Forms

 Um Web Form pode ser visto como sendo constituído de dois componentes : o código e os elementos visuais.

Os elementos visuais são criados em um arquivo .aspx que atua como um container para os elementos HTML e controles Web Forms. O código pode ser armazenado em um arquivo de classe separado ou pode residir no mesmo arquivo  .aspx.

Embora você possa criar Web Forms de componentes separados , eles forma uma unidade.

Quando um Web Form é compilado ASP .NET traduz a página e seu código, gera uma nova classe dinamicamente e então compila a nova classe. Esta classe é derivada da classe Page mas é estendida com controles, seu código e texto HTML estático no arquivo .aspx.

Esta nova página derivada da classe Page torna-se um único arquivo executável no servidor sempre que uma página Web Form é requisitada. Em tempo de execução , a classe Page processa as requisições e respostas criando dinamicamente HTML e retornando-o ao Navegador. 

Se a página contém Web Controls  a página derivada da classe Page atua como um container para os controles e instâncias de controles são criadas em tempo de execução.

Este comportamento é diferente do modelo clássico ASP , nele todo o Web Form é um programa executável cuja saída é HTML .

No modelo ASP a página consistia de código HTML estático e código ASP que era extraído, processado e o resultado retornado para o código HTML estático gerando a saída HTML para o cliente.

A seguir uma relação dos principais controles de servidor e seus eventos suportados:

Controle Evento Suportado
Button Click
Command
 
Calendar DayRender
SelectionChanged
VisibleMonthChanged
 
 
CheckBox CheckedChanged
DataGrid ItemCreated
ItemDataBound
PageIndexChanged
SortCommand
 
 
 
DataList ItemCreated
ItemDataBound
 
DropDownList SelectedIndexChanged
ImageButton Click
ListBox SelectedIndexChanged
RadioButton CheckedChanged
TextBox TextChanged

Se você esta estranhando a pequena quantidade de eventos dos controles de servidor (se comparado com os controles de formulários Windows) pense que um evento geralmente requer uma ida ao servidor para processamento e retorno, e , isto pode afetar o desempenho do formulário. Por esta razão os controles oferecem um conjunto limitado de eventos.

Por hoje é só . Aguarde mais artigos sobre Web Forms ...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti