ASP.NET Core -  Inicialização da aplicação (Startup)


Neste artigo veremos o processo de inicialização das aplicações ASP .NET Core analisando os arquivos Startup.cs e Program.cs.

Todas as aplicações ASP .NET Core são aplicações console, e, os outros tipos de aplicações como MVC, SPA, etc, são construidas sobre a aplicação Console.

Examinando a classe Program

A aplicação console inicia com a execução do arquivo Program.cs, que precisa conter o método estático Main que é chamado sempre que a aplicação for iniciada.

Vamos criar  uma aplicação ASP .NET Core Web Application usando o template Empty e a seguir abrir o projeto no VS 2017 Community 2017 exibindo o contéudo do arquivo Program.cs.

Observe o código do método Main() : Este é o ponto de entrada da nossa aplicação.

O método Main cria um Host, faz o Building e o executa, e, o Host então passa a atender requisições HTTP.

O método estático CreateWebHostBuilder configura e cria o Host, retornando uma referência ao Host.

A sintaxe usada neste método é chamada de 'expression bodied function member'.

As tarefas realizadas por este método são:

Você pode ver detalhes do código espiando o código fonte da ASP .NET Core neste link: https://github.com/aspnet/AspNetCore

Examinando a classe Startup

Analisando o código do arquivo Program notamos que no método estático CreateaWebHostBuilder ele chama o método Startup.

O método UseStartup informa ao host onde procurar pela classe Startup. O host, então, espera que a classe de inicialização defina o método de serviços Configure e ConfigureServices.

A classe Startup é uma classe simples que não herda de ninguem e nem implementa nenhuma interface.

Ela tem duas funções principais.

  1. Configurar o pipeline de requisições que lida com todas as requisições feitas ao aplicativo;
  2. Configurar os serviços para injeção de dependência;

Para realizar essas tarefas ela usa os métodos ConfigureServices() e Configure().

O método ConfigureServices

O método ConfigureServices nos permite adicionar ou registrar serviços no Aplicativo. As outras partes do nosso aplicativo podem solicitar esses serviços via injeção de dependência.

A injeção de dependência é um dos novos recursos do ASP.NET Core. O ASP.NET Core usa a injeção de dependência extensivamente.

public void ConfigureServices (serviços IServiceCollection)
{
    
}

O método ConfigureServices espera a instância de serviços (do tipo IServiceCollection) que é injetada no ConfigureServices via Injeção de Dependência.

O método Configure

O método Configure nos permite configurar o pipeline de requisição HTTP que especifica como o aplicativo deve responder a solicitações HTTP.

Os componentes que compõem o pipeline de solicitação são chamados de middleware.

  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  {
       if (env.IsDevelopment())
       {
            app.UseDeveloperExceptionPage();
       }
       app.Run(async (context) =>
       {
           await context.Response.WriteAsync("Hello World!");
        });
  }

O método configure solicita uma instância de IApplicationBuilder e HostingEnvironment. Estes são injetados no Configure pelo Injector de Dependência nativo.

Nós, então, adicionamos nossos componentes de middleware à instância da IApplicationBuilder(app).

A seguir verificamos se estamos em ambiente de desenvolvimento, se sim, registramos o Middleware DeveloperExceptionPage usando o método de extensão UseDeveloperExceptionPage.

Em seguida, usamos o método Run do aplicativo para registrar o segundo middleware. Este middleware escreve 'Hello World' para o objeto Response.

Assim a ASP .NET Core é totalmente modular e inicia o pipeline vazio, que você vai preenchendo conforme a necessidade de serviços da sua aplicação. Isso faz com que as aplicações ASP .NET Core tenham um ótimo desempenho.

Na próxima parte do artigo vamos tratar do servidor Kestrel.

"Quão amáveis são os teus tabernáculos, SENHOR dos Exércitos!
A minha alma está desejosa, e desfalece pelos átrios do Senhor; o meu coração e a minha carne clamam pelo Deus vivo."

Salmos 84:1-2

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 ?

Referências:


José Carlos Macoratti