A finalidade do ASP.NET é a seguinte:
• Processar páginas para produzir saída dinâmica
• O aplicativo e suas páginas são instanciados e processados no servidor
• O ASP.NET compila as páginas dinamicamente e as transforma em HTML

O ciclo de vida do ASP.NET pode ser dividido em dois grupos:
• Ciclo de vida do aplicativo
• Ciclo de vida da página

Ciclo de vida do aplicativo ASP.NET

O ciclo de vida do aplicativo possui os seguintes estágios:
   • O usuário faz uma solicitação para acessar o recurso do aplicativo, uma página.
   • O navegador envia essa solicitação ao servidor da web.

   • Um pipeline unificado recebe a primeira solicitação e os seguintes eventos ocorrem:
      • Um objeto da classe ApplicationManager é criado.
      • Um objeto da classe HostingEnvironment é criado para fornecer informações sobre os recursos.
      • Os itens de nível superior no aplicativo são compilados.

   • Objetos de resposta são criados. Os objetos de aplicativo como HttpContext, HttpRequest e HttpResponse são criados e inicializados.
   • Uma instância do objeto HttpApplication é criada e atribuída à solicitação.
   • A solicitação é processada pela classe HttpApplication. Eventos diferentes são gerados por essa classe para processar a solicitação.

Ciclo de vida da página ASP.NET

Quando uma página é solicitada, a página é carregada do disco para a memória do servidor , processada e enviada ao navegador.
Então é descarregado da memória.
Em cada uma dessas etapas, métodos e eventos estão disponíveis, e podem ser substituídos de acordo com a necessidade do aplicativo.
Em outras palavras, você pode escrever seu próprio código para substituir o código padrão.
A classe Page cria uma árvore hierárquica de todos os controles na página.
Todos os componentes na página, exceto as diretivas, fazem parte dessa árvore de controle.
Você pode ver a árvore de controle adicionando trace = "true" à diretiva da página.
Abordaremos as diretivas e o rastreamento da página em 'diretivas' e 'manipulação de eventos'.

As fases do ciclo de vida da página são:

• Inicialização
• Instanciação dos controles na página
• Restauração e manutenção do estado
• Execução dos códigos do manipulador de eventos
• Renderização de página

Compreender o ciclo da página ajuda a escrever códigos para que algo específico aconteça em qualquer estágio do ciclo de vida da página.
Também ajuda a escrever controles personalizados e inicializá-los no momento certo, preencher suas propriedades com dados do estado de exibição e executar o código de comportamento do controle.

Estágios de uma página ASP.NET:

• Solicitação de página (Page request) - Quando o ASP.NET obtém uma solicitação de página, decide se deve analisar e compilar a página ou haveria uma versão em cache da página; consequentemente, a resposta é enviada.
• Início do ciclo de vida da página - Nesse estágio, os objetos de solicitação e resposta são definidos. Se a solicitação for uma solicitação antiga ou postar novamente, a propriedade IsPostBack da página será configurada como true. A propriedade UICulture da página também está definida.
• Inicialização da página - Nesse estágio, os controles na página recebem um ID exclusivo, definindo a propriedade UniqueID e os temas são aplicados. Para uma nova solicitação, os dados de postagem são carregados e as propriedades de controle são restauradas para os valores do estado de exibição.
• Carregamento da página - Nesse estágio, as propriedades de controle são definidas usando o estado da visualização e os valores do estado de controle.
• Validação - O método de validação do controle de validação é chamado e, em sua execução bem-sucedida, a propriedade IsValid da página é configurada como true.
• Manipulação de evento de postagem posterior - Se a solicitação for uma postagem posterior (solicitação antiga), o manipulador de eventos relacionado será chamado.
• Renderização de página - Nesse estágio, visualize o estado da página e todos os controles são salvos. A página chama o método Render para cada controle e a saída da renderização é gravada na classe OutputStream da propriedade Response da página.
• Descarregar - a página renderizada é enviada ao cliente e as propriedades da página, como Resposta e Solicitação, são descarregadas e toda a limpeza é feita.

Eventos do ciclo de vida da página ASP.NET

Em cada estágio do ciclo de vida da página, a página gera alguns eventos que podem ser codificados.
Um manipulador de eventos é basicamente uma função ou sub-rotina, vinculada ao evento, usando atributos declarativos como Onclick ou handle.
A seguir, são apresentados os eventos do ciclo de vida da página:

PreInit - PreInit é o primeiro evento no ciclo de vida da página.
Ele verifica a propriedade IsPostBack e determina se a página é uma postagem.
Ele define os temas e as páginas mestras, cria controles dinâmicos e obtém e define os valores das propriedades do perfil.
Esse evento pode ser tratado sobrecarregando o método OnPreInit ou criando um manipulador Page_PreInit.

Init - O evento Init inicializa a propriedade de controle e a árvore de controle é criada.
Esse evento pode ser tratado sobrecarregando o método OnInit ou criando um manipulador Page_Init.

InitComplete - o evento InitComplete permite o rastreamento do estado da visualização.
Todos os controles ativam o rastreamento do estado de exibição.

LoadViewState - O evento LoadViewState permite carregar informações de estado de exibição nos controles.

LoadPostData - Durante esta fase, o conteúdo de todos os campos de entrada é definido com a tag <form> são processados.

Pré-carregamento - O pré-carregamento ocorre antes dos dados de postagem posterior serem carregados nos controles.
Esse evento pode ser tratado sobrecarregando o método OnPreLoad ou criando um manipulador Page_PreLoad.

Carregar - O evento Carregar é gerado primeiro para a página e depois recursivamente para todos os controles filho.
Os controles na árvore de controle são criados.
Esse evento pode ser tratado sobrecarregando o método OnLoad ou criando um manipulador Page_Load.

LoadComplete - O processo de carregamento é concluído, os manipuladores de eventos de controle são executados e a validação da página ocorre.
Esse evento pode ser tratado sobrecarregando o método OnLoadComplete ou criando um manipulador Page_LoadComplete

PreRender - O evento PreRender ocorre pouco antes da renderização da saída.
Manipulando esse evento, as páginas e os controles podem executar quaisquer atualizações antes que a saída seja renderizada.

PreRenderComplete - Como o evento PreRender é disparado recursivamente para todos os controles filho, esse evento garante a conclusão da fase de pré-renderização.

SaveStateComplete - O estado do controle na página é salvo.
A personalização, o estado de controle e as informações do estado de exibição são salvas.
A marcação HTML é gerada. Esse estágio pode ser tratado substituindo o método Render ou criando um manipulador Page_Render.

Descarregar - a fase Descarregar é a última fase do ciclo de vida da página.
Ele gera o evento UnLoad para todos os controles recursivamente e, por último, para a própria página.
A limpeza final é feita e todos os recursos e referências, como conexões com o banco de dados, são liberados.
Este evento pode ser tratado modificando o método OnUnLoad ou criando um manipulador Page_UnLoad.


Uma página ASP.NET é composta por vários controles de servidor, além de controles, texto e imagens em HTML.
Os dados confidenciais da página e os estados dos diferentes controles da página são armazenados em campos ocultos que formam o contexto dessa solicitação de página.

O tempo de execução do ASP.NET controla a associação entre uma instância da página e seu estado.
Uma página ASP.NET é um objeto da página ou herdada dela.

Todos os controles nas páginas também são objetos da classe de controle relacionada herdada de uma classe de controle pai.
Quando uma página é executada, uma instância da página do objeto é criada junto com todos os seus controles de conteúdo.

Uma página ASP.NET também é um arquivo do lado do servidor salvo com a extensão .aspx.
É de natureza modular e pode ser dividido nas seguintes seções principais:

• Diretivas de Página
• Seção de Código
• Layout da página
• Diretivas de Página
As diretivas da página configuram o ambiente para a página ser executada.
A diretiva @Page define atributos específicos da página usados ​​pelo analisador e compilador de páginas do ASP.NET.
As diretivas da página especificam como a página deve ser processada e quais suposições precisam ser tomadas sobre a página.

Ele permite importar namespaces, carregar montagens e registrar novos controles com nomes de tags personalizados e prefixos de namespaces.

Seção de Código

A seção de código fornece os manipuladores para os eventos de página e controle, além de outras funções necessárias.
Mencionamos que o ASP.NET segue um modelo de objeto.
Agora, esses objetos geram eventos quando alguns eventos ocorrem na interface do usuário, como um usuário clica em um botão ou move o cursor.
O tipo de resposta que esses eventos precisam corresponder é codificado nas funções do manipulador de eventos.
Os manipuladores de eventos são nada além de funções vinculadas aos controles.

A seção de código ou o arquivo code behind fornece todas essas rotinas de manipulador de eventos e outras funções usadas pelo desenvolvedor.
O código da página pode ser pré-compilado e implantado na forma de um assembly binário.

Layout da página

O layout da página fornece a interface da página.
Ele contém os controles do servidor, texto, JavaScript embutido e tags HTML.