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:
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: