terça-feira, 22 de abril de 2008

Page Class - A página do ASP.NET

ASP.NET Modelo de codificação da página web

Uma página ASP.NET consiste em duas partes:

  • Elementos visuais, que inclui marcação específica(server controls ) e html(textos estáticos)
  • Lógica de programação da página, que contêm eventos e outros códigos

Existem dois modelos para gerenciar os elementos visuais e códigos, ambos funcionam da mesma maneira, mas diferenciam em sua utilização: Single File(Arquivo único) e Code Behind.

Single File (Arquivo único)

Neste modelo tanto o visual quanto o código ficam num arquivo único. Isto facilita a manutenção para páginas simples e serviços como renomear arquivos.

Code Behind(Arquivo de código separado)

Neste modelo a parte de código é separado da parte visual. Isto é bastante interessante, pois passamos a ter um controle separado da parte visual e código, facilitando o trabalho entre desenvolvedores e designers.

Page Class

As requisições aos recursos ASP.NET são repassados pelo IIS pelo executor de ASP.NET. Neste momento estou limitando a citar a requisição de páginas, do ASPX.

Ao requisitar uma página, o executor do ASP.NET combina a página, elementos de servidor, como controles, para manipulação de eventos que escrevemos. Como não temos que compilar as páginas em assemblies, netes casos o ASP.NET compila a página na primeira requisição a página. Caso a página ou algum recurso que a página depende sofra alguma alteração a página é recompilada automaticamente.

O ASP.NET pode compilar as páginas previamente para melhorar o desempenho da aplicação: http://msdn2.microsoft.com/en-us/library/399f057w.aspx

Ciclo de vida da página

A página ASP.NET é executada num ciclo de vida que passa por várias etapas. Estas incluem inicialização, instanciar controles, recuperar e manter estado, executar manipuladores de eventos e renderizar. É importante dominar o ciclo de vida da página para utilizar os eventos apropriados quando necessário.

Estágio

Descrição

Solicitação de página

A solicitação de página ocorre antes que o ciclo de vida da página comece. Quando a página é solicitada por um usuário, ASP.NET determina se a página precisa ser analisada e compilada (portanto, começando a vida de uma página) ou se uma versão em cache da página pode ser enviada em resposta sem executar a página.

Iniciar

Na etapa inicial, as propriedades da página, como Request e Response são definidas. Nesse estágio, a página também determina se o Request é um Postback ou um novo Request e define a IsPostBack Propriedade. Além disso, durante a etapa inicial, a propriedade UICulture da página é definida.

Inicialização da página

Durante a inicialização de página, os controles da página estão disponíveis e é definido a propriedade UniqueID de cada controle. Os temas também são aplicados para a página. Se a solicitação atual for um postback, os dados PostBack ainda não foram carregados e valores da propriedade do controle não foram restaurados com os valores do ViewState.

Carga

Durante o carregamento, se a solicitação atual é um postback, as propriedades de controle serão carregadas com informações recuperadas do ViewState e do ControlState.

Validação

Durante a validação, o método Validate de todos os controles de validação são chamados, este define a propriedade IsValid de cada um dos controles validadores da página.

Tratamento de evento PostBack

Se a solicitação for uma postback, quaisquer manipuladores de eventos são chamados.

Renderização

Antes da renderização, o viewstate é salvo para a página e todos os controles. Durante a fase de renderização, a página chamará o método Render para cada controle, fornecendo um escritor de texto que grava a saída para o Stream de saída da propriedade Response da página.

Descarregar

O descarregar é chamado quando a página tiver sido processada, enviada para o cliente e está pronta para ser descarregada. Neste ponto, as propriedades da página, como Response e Request são descarregados e toda limpeza será executada.

Referências:
http://msdn2.microsoft.com/en-us/library/015103yb.aspx
http://msdn2.microsoft.com/en-us/library/ms178138.aspx
http://msdn2.microsoft.com/pt-br/library/ms178472.aspx
http://msdn2.microsoft.com/pt-br/library/aa479007(en-us).aspx