ASP .NET Core 2.0 - Analisando a inicialização da app


 A ASP .NET Core 2.0 acabou de sair do forno e vamos aproveitar e mostrar as novas opções de projeto da ferramenta NET CLI e criar um projeto usando o editor VS Code e ver o que mudou na inicilização.

Vamos então começar com a ASP .NET Core 2.0 que foi lançada como release final no dia 14 de agosto.

A primeira coisa a fazer é baixar a nova versão neste link : https://www.microsoft.com/net/download/core  

Se preferir usar o Visual Studio pode baixar a versão Community Update 15.3 neste link : Visual Studio 2017 Update 15.3

Nota: o .NET Core 2.0,  também pode  coexistir com versões anteriores sem afetar o desenvolvimento de projetos pré-existentes.

Neste artigo eu vou criar um projeto usando a ferramenta NET CLI e o VS Code e ver o que mudou na inicilização. Então se você não tem o VS Code baixe aqui : https://code.visualstudio.com/download

Usando a NET CLI

Vamos iniciar usando a ferramente de linha de comando da Microsoft : A NET CLI.

Os comandos mais usados da CLI são:

Comando Ação
dotnet new Cria um novo projeto, arquivo de configuração ou solução basedo em um template específico. (Inicia um projeto .NET Core)
dotnet restore Usa o NuGet para restaurar dependências, bem como ferramentas específicas do projeto que são especificadas no arquivo de projeto.
dotnet build Compila o projeto e suas dependências em um conjunto de binários. Os binários incluem o código do projeto em arquivos de linguagem intermediária (IL) com uma extensão .dll e arquivos de símbolo usados para depuração com uma extensão .pdb.
dotnet run Permite executar sua aplicação a partir do código fonte. (depende do comando dotnet build)
dotnet clear Limpa a saida da compilação anterior.

Abra uma janela de prompt de comandos e digite :  dotnet --version

Se você instalou o NET Core SDK com sucesso vai ver a saida da versão como : 2.0.0

Agora vamos ver as novos opções de templates de projeto digitando: dotnet new

Destaquei os novos templates razor, angular e react mas há também os projetos page, viewimports e viewstart.

Na nova versão ao criar um projeto digitando dotnet new as dependências já são restauradas não sendo mais necessários digitar o dotnet restore.

Veja esse recurso em ação após criar um projeto angular digitando: dotnet new angular

Para abir o projeto criado no VS Code digite : code .

A seguir vemos a estrutura do projeto:

Note o novo código de inicialização do arquivo Program.cs

Na ASP.NET Core 2.0 , as responsabilidades do IWebHost mudaram um pouco. Além de ter as mesmas responsabilidades que antes, o IWebHost ganhou mais duas :

- Definir a configuração
- Definir o logging


Além disso, a ASP.NET Core 2.0 apresenta um método auxiliar, CreateDefaultBuilder, que encapsula a maior parte do código comum encontrado no Program.cs, além de cuidar da configuração e do registro!

Como você pode ver pelo código , não há nenhuma menção do Kestrel, integração do IIS, configuração etc. - tudo isso é tratado pelo método CreateDefaultBuilder.  Ao mover a configuração e o código de registro para este método simplificou o arquivo de Inicialização.

Dando uma olhada no código fonte do método CreateDefaultBuilder vemos o seguinte:
 
public static IWebHostBuilder CreateDefaultBuilder(string[] args)  
{
    var builder = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .ConfigureAppConfiguration((hostingContext, config) => { /* setup config */  })
        .ConfigureLogging((hostingContext, logging) =>  { /* setup logging */  })
        .UseIISIntegration()
        .UseDefaultServiceProvider((context, options) =>  { /* setup the DI container to use */  })
        .ConfigureServices(services => 
        {
            services.AddTransient<IConfigureOptions<KestrelServerOptions>, KestrelServerOptionsSetup>();
        });
    return builder;
}

A primeira vista o código é bem parecido com a da versão 1.1 mas existem alguns novos métodos e você pode ver que este método faz em grande parte o mesmo trabalho que o Program fez no ASP.NET Core 1.0 - configura o Kestrel, define o ContentRoot e configura a integração do IIS, como antes. Além disso, faz várias outras coisas como:

- ConfigureAppConfiguration - contém o código de configuração que usa para atuar na configuração de Inicialização;
- ConfigureLogging - configura o log que usa para atuar no Startup.Configure;
- UseDefaultServiceProvider - Configura o contêiner DI incorporado e permite que você personalize seu comportamento;
- ConfigureServices - Adiciona serviços adicionais necessários aos componentes adicionados ao IWebHost. Configura as opções do servidor Kestrel, que permite que você defina facilmente sua configuração de host web como parte de sua configuração normal;

Assim o método CreateDefaultBuilder procura simplificar o código da inicialização inicial da sua aplicação.

Porque todos quantos fostes batizados em Cristo já vos revestistes de Cristo.
Nisto não há judeu nem grego; não há servo nem livre; não há macho nem fêmea; porque todos vós sois um em Cristo Jesus.

Gálatas 3:27-28

 

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/VS 2015 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti