Principais novidades do ASP.NET Core 2.2

4 fev

Fala Galera,

Fiquei um pouco sumido devido a compromissos profissionais. Agora voltando a vida normal, estou de volta as postagens. Também gostaria de compartilhar que este ano teremos muitas novidades.

Algumas dessas novidades são o Coders in Rio Summit 2019, no qual teremos uma edição com mais diversidade em termos de tecnologia, ainda temos no Canal do Coders In Rio no qual toda terça feira acontece uma live com conteúdo de alto nível e de graça. Se inscreva lá em https://youtube.com/c/CanalCodersInRio

Neste post vou falar um pouco sobre as novidades do ASP.NET Core 2.2 que foi lançado recentemente para uso em produção.

E o que esta nova versão traz de novidades. Veja algumas novidades que separei abaixo:

  • Melhoria em convenções do Open API (Swagger) 
  • Resposta Automática de erro 4xx (ProblemDetails)
  • Health Check
  • Compactação de Resposta Brotli
  • Atualizações de Templates para Bootstap 4 e Angular 6
  • HTTP/2 in Kestrel
  • ASP.NET Core Module Improvements

Melhoria em convenções do Open API (Swagger) 

Nesta nova versão foi incorporado um novo analisador de API chamado Microsoft.AspNetCore.Mvc.Api.Analyzers. Esse novo analisador trabalha em conjunto com Controllers que utilizam o atributo ApiControllerAttribute que surgiu na versão 2.1.

O analisador inspeciona os Controllers que estão anotados com o ApiControllerAttribute e identifica ações que não estão completamente documentada nas suas respostas.

Veja como esse novo analisador pode ajudar no nosso desenvolvimento

Resposta Automática de erro 4xx (ProblemDetails)

Na versão 2.1 foi introduzido o  ProblemDetails, objeto de erro padrão de resposta que foi baseado na RFC 7807. Este objeto cuida dos detalhes de erros em uma chamada de WebApi.

Nesta nova versão esse objeto de retorno foi padronizado para status code do tipo 4xx (Client Errors Code) em Controllers que utilizam o ApiControllerAttribute. Utilizando o IActionResult caso alguma chamada resulte em um erro de cliente 422 por exemplo, no body da resposta estará este novo objeto ProblemDetails.

Agora com esse objeto podemos padronizar as respostas de erros de um forma simples e elegante.

Health Check Middleware

Nesta versão foi criado um novo Middleware de Health Check.

Com esse novo Middleware torna-se fácil monitorar a saúde de sua aplicação em ambiente ASP.NET Core. Health Check são usados para determinar se o seus sistema está respondendo de forma normal ou seja se está saudável ou não.

Para usar este novo serviço basta você registrar no ConfigureServices adicionando quais serviços deseja monitorar.

public void ConfigureServices(IServiceCollection services)
{
    services.AddHealthChecks();
}

public void Configure(IApplicationBuilder app)
{
    app.UseHealthChecks("/health");
}

Caso você deseje monitorar um banco de dados:

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddHealthChecks()
        .AddCheck(new SqlConnectionHealthCheck("MyDatabase", Configuration["ConnectionStrings:DefaultConnection"]));
}

public void Configure(IApplicationBuilder app)
{
    app.UseHealthChecks("/health");
}

 

Compactação de Resposta Brotli

Podemos agora utilizar o novo provedor de compactação Brotli para compactar as respostas de nossas WebApi.

Para utilizar este novo compactador temos que configurar nossa aplicação conforme código abaixo:

public void ConfigureServices(IServiceCollection services)
{
    services.AddResponseCompression();
    
    services.Configure<BrotliCompressionProviderOptions>(options => 
    {
        options.Level = CompressionLevel.Fastest;
    });
}

public void ConfigureServices(IServiceCollection services)
{
    services.AddResponseCompression(options =>
    {
        options.Providers.Add<BrotliCompressionProvider>();
    });
}

 

HTTP/2 in Kestrel

HTTP/2 é uma grande revisão do protocolo HTTP. Com essa revisão foi possível usar compressão em cabeçalhos HTTP, fluxo multiplexed dentro de uma mesma conexão entre outros melhoramentos. Para usar o HTTP/2 todos os request tem que ser via HTTPS e ter suporte a ALPN que é uma extensão do TLS que permite que o servidor e cliente negociem a versão do TLS a ser usada.

Caso o server o client não consiga utilizar o HTTP/2, o HTTP/1 será usado para atender o request.

Podemos usar o HTTP/2 dentro do Kestrel para isso temos que configurar o nosso server com as seguintes configurações:

WebHost.CreateDefaultBuilder()
    .ConfigureKestrel(options =>
    {
        options.Listen(IPAddress.Any, 8080, listenOptions =>
        {
            listenOptions.Protocols = HttpProtocols.Http1AndHttp2;
            listenOptions.UseHttps("testcert.pfx", "testPassword")
        }); 
    })
    .UseStartup<Startup>();

 

 

ASP.NET Core Module Improvements

Na versão do ASP.NET Core 2.2 um novo modulo foi criado o aspNetCoreModuleV2 para hosting de aplicações ASP.NET Core. Este novo modulo traz a capacidade de hostear sua aplicação trabalhando em conjunto com o WorkProcess do IIS (w3wp.exe) e assim economizando processamento pois o IIS não precisa mais fazer o proxy-reverso.

O ganho de performe foi absurdo, veja o gráfico abaixo:

Para ativar esse novo recurso, configure o .csproj conforme mostrado abaixo:

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
  <AspNetCoreHostingModel>inprocess</AspNetCoreHostingModel>
</PropertyGroup>

Também podemos configurar dentro do Visual Studio conforme figura abaixo:

 

Essas são algumas das novidades que esta nova versão traz e as novidades não param por ai e muita coisas ainda vai surgir.

Caso queira saber de todas as novidades clique aqui

Abs e até a próxima.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *