Novidades do ASP.NET Core 2.2What's new in ASP.NET Core 2.2

Este artigo destaca as alterações mais significativas no ASP.NET Core 2.2, com links para a documentação relevante.This article highlights the most significant changes in ASP.NET Core 2.2, with links to relevant documentation.

Analisadores e convenções do OpenAPIOpenAPI Analyzers & Conventions

O Open API (anteriormente conhecido como Swagger) é uma especificação independente de linguagem para descrever APIs REST.OpenAPI (formerly known as Swagger) is a language-agnostic specification for describing REST APIs. O ecossistema do Open API tem ferramentas que permitem descobrir, testar e produzir o código do cliente usando a especificação.The OpenAPI ecosystem has tools that allow for discovering, testing, and producing client code using the specification. O suporte para gerar e visualizar documentos do OpenAPI no ASP.NET Core MVC é fornecido por meio de projetos orientados pela Comunidade, como NSwag e swashbuckle. AspNetCore.Support for generating and visualizing OpenAPI documents in ASP.NET Core MVC is provided via community driven projects such as NSwag and Swashbuckle.AspNetCore. O ASP.NET Core 2.2 fornece ferramentas e experiências de runtime aprimoradas para a criação de documentos do OpenAPI.ASP.NET Core 2.2 provides improved tooling and runtime experiences for creating OpenAPI documents.

Para obter mais informações, consulte os seguintes recursos:For more information, see the following resources:

Suporte de detalhes do problemaProblem details support

O ASP.NET Core 2.1 introduziu o ProblemDetails, com base na especificação RFC 7807 para transmitir os detalhes de um erro com uma Resposta HTTP.ASP.NET Core 2.1 introduced ProblemDetails, based on the RFC 7807 specification for carrying details of an error with an HTTP Response. No 2.2, ProblemDetails é a resposta padrão para códigos de erro do cliente em controladores atribuídos com ApiControllerAttribute.In 2.2, ProblemDetails is the standard response for client error codes in controllers attributed with ApiControllerAttribute. Um IActionResult que retorna um código de status de erro do cliente (4xx) retorna um corpo ProblemDetails.An IActionResult returning a client error status code (4xx) now returns a ProblemDetails body. O resultado também inclui uma ID de correlação que pode ser usada para correlacionar o erro usando logs de solicitação.The result also includes a correlation ID that can be used to correlate the error using request logs. Para erros do cliente, ProducesResponseType usa como padrão ProblemDetails como o tipo de resposta.For client errors, ProducesResponseType defaults to using ProblemDetails as the response type. Isso é documentado na saída do OpenAPI/Swagger gerada com o NSwag ou o Swashbuckle.AspNetCore.This is documented in OpenAPI / Swagger output generated using NSwag or Swashbuckle.AspNetCore.

Roteamento de ponto de extremidadeEndpoint Routing

O ASP.NET Core 2.2 usa um novo sistema de roteamento de ponto de extremidade para expedição aprimorada de solicitações.ASP.NET Core 2.2 uses a new endpoint routing system for improved dispatching of requests. As alterações incluem novos membros da API de geração de link e transformadores de parâmetro de rota.The changes include new link generation API members and route parameter transformers.

Para obter mais informações, consulte os seguintes recursos:For more information, see the following resources:

Verificações de integridadeHealth checks

Um novo serviço de verificações de integridade facilita o uso do ASP.NET Core em ambientes que exigem verificações de integridade, como o Kubernetes.A new health checks service makes it easier to use ASP.NET Core in environments that require health checks, such as Kubernetes. As verificações de integridade incluem middleware e um conjunto de bibliotecas que definem um serviço e uma abstração IHealthCheck.Health checks includes middleware and a set of libraries that define an IHealthCheck abstraction and service.

As verificações de integridade são usadas por um orquestrador de contêineres ou um balanceador de carga para determinar rapidamente se um sistema está respondendo às solicitações normalmente.Health checks are used by a container orchestrator or load balancer to quickly determine if a system is responding to requests normally. Um orquestrador de contêineres pode responder a uma verificação de integridade com falha interrompendo uma implantação sem interrupção ou reiniciando um contêiner.A container orchestrator might respond to a failing health check by halting a rolling deployment or restarting a container. Um balanceador de carga pode responder a uma verificação de integridade encaminhando o tráfego para fora da instância com falha do serviço.A load balancer might respond to a health check by routing traffic away from the failing instance of the service.

As verificações de integridade são expostas por um aplicativo como um ponto de extremidade HTTP usado por sistemas de monitoramento.Health checks are exposed by an application as an HTTP endpoint used by monitoring systems. As verificações de integridade podem ser configuradas para uma variedade de cenários de monitoramento em tempo real e sistemas de monitoramento.Health checks can be configured for a variety of real-time monitoring scenarios and monitoring systems. O serviço de verificações de integridade é integrado ao projeto BeatPulse.The health checks service integrates with the BeatPulse project. que facilita a adição de verificações para dezenas de sistemas e dependências populares.which makes it easier to add checks for dozens of popular systems and dependencies.

Para obter mais informações, confira Verificações de integridade no ASP.NET Core.For more information, see Health checks in ASP.NET Core.

HTTP/2 no KestrelHTTP/2 in Kestrel

O ASP.NET Core 2.2 adiciona suporte ao HTTP/2.ASP.NET Core 2.2 adds support for HTTP/2.

O HTTP/2 é uma revisão principal do protocolo HTTP.HTTP/2 is a major revision of the HTTP protocol. Os recursos notáveis do HTTP/2 incluem:Notable features of HTTP/2 include:

  • Suporte para compactação de cabeçalho.Support for header compression.
  • Fluxos totalmente multiplexados em uma única conexão.Fully multiplexed streams over a single connection.

Embora HTTP/2 preserve a semântica de HTTP (por exemplo, cabeçalhos e métodos HTTP), trata-se de uma alteração significativa do HTTP/1. x sobre como os dados são emoldurados e enviados entre o cliente e o servidor.While HTTP/2 preserves HTTP's semantics (for example, HTTP headers and methods), it's a breaking change from HTTP/1.x on how data is framed and sent between the client and server.

Como consequência dessa alteração no enquadramento, os servidores e os clientes precisam negociar a versão de protocolo usada.As a consequence of this change in framing, servers and clients need to negotiate the protocol version used. O recurso ALPN (Negociação de Protocolo da Camada de Aplicativo) é uma extensão TLS com a qual o servidor e o cliente podem negociar a versão de protocolo usada como parte do handshake TLS.Application-Layer Protocol Negotiation (ALPN) is a TLS extension that allows the server and client to negotiate the protocol version used as part of their TLS handshake. Embora seja possível ter um conhecimento prévio entre o servidor e o cliente sobre o protocolo, todos os principais navegadores dão suporte ALPN como a única maneira de estabelecer uma conexão HTTP/2.While it is possible to have prior knowledge between the server and the client on the protocol, all major browsers support ALPN as the only way to establish an HTTP/2 connection.

Para obter mais informações, confira Suporte ao HTTP/2.For more information, see HTTP/2 support.

Configuração do KestrelKestrel configuration

Em versões anteriores do ASP.NET Core, as opções do Kestrel são configuradas por meio da chamada a UseKestrel.In earlier versions of ASP.NET Core, Kestrel options are configured by calling UseKestrel. No 2.2, as opções do Kestrel são configuradas por meio da chamada a ConfigureKestrel no construtor do host.In 2.2, Kestrel options are configured by calling ConfigureKestrel on the host builder. Essa alteração resolve um problema com a ordem dos registros IServer para a hospedagem em processo.This change resolves an issue with the order of IServer registrations for in-process hosting. Para obter mais informações, consulte os seguintes recursos:For more information, see the following resources:

Hospedagem em processo do IISIIS in-process hosting

Em versões anteriores do ASP.NET Core, o IIS funciona como um proxy reverso.In earlier versions of ASP.NET Core, IIS serves as a reverse proxy. No 2.2, o Módulo do ASP.NET Core pode inicializar o CoreCLR e hospedar um aplicativo dentro do processo de trabalho do IIS (w3wp.exe).In 2.2, the ASP.NET Core Module can boot the CoreCLR and host an app inside the IIS worker process (w3wp.exe). A hospedagem em processo fornece ganhos de desempenho e diagnóstico durante a execução com o IIS.In-process hosting provides performance and diagnostic gains when running with IIS.

Para obter mais informações, confira Hospedagem em processo para IIS.For more information, see in-process hosting for IIS.

SignalR Cliente JavaSignalR Java client

ASP.NET Core 2,2 apresenta um cliente Java para o SignalR .ASP.NET Core 2.2 introduces a Java Client for SignalR. Este cliente dá suporte à conexão com um ASP.NET Core SignalR Server a partir do código Java, incluindo aplicativos Android.This client supports connecting to an ASP.NET Core SignalR Server from Java code, including Android apps.

Para obter mais informações, consulte ASP.NET Core SignalR cliente Java.For more information, see ASP.NET Core SignalR Java client.

Melhorias do CORSCORS improvements

Em versões anteriores do ASP.NET Core, o Middleware do CORS permite o envio dos cabeçalhos Accept, Accept-Language, Content-Language e Origin, independentemente dos valores configurados em CorsPolicy.Headers.In earlier versions of ASP.NET Core, CORS Middleware allows Accept, Accept-Language, Content-Language, and Origin headers to be sent regardless of the values configured in CorsPolicy.Headers. No 2.2, uma correspondência de política do Middleware do CORS só é possível quando os cabeçalhos enviados em Access-Control-Request-Headers corresponder exatamente aos cabeçalhos indicados em WithHeaders.In 2.2, a CORS Middleware policy match is only possible when the headers sent in Access-Control-Request-Headers exactly match the headers stated in WithHeaders.

Para obter mais informações, confira Middleware do CORS.For more information, see CORS Middleware.

Compactação de respostaResponse compression

O ASP.NET Core 2.2 pode compactar respostas com o formato de compactação Brotli.ASP.NET Core 2.2 can compress responses with the Brotli compression format.

Para obter mais informações, confira O middleware de compactação de resposta dá suporte à compactação Brotli.For more information, see Response Compression Middleware supports Brotli compression.

Modelos de projetoProject templates

Os modelos de projeto Web ASP.NET Core foram atualizados para o Bootstrap 4 e o Angular 6.ASP.NET Core web project templates were updated to Bootstrap 4 and Angular 6. A nova aparência é visualmente mais simples e facilita a visualização das estruturas importantes do aplicativo.The new look is visually simpler and makes it easier to see the important structures of the app.

Página Inicial ou de Índice

Desempenho de validaçãoValidation performance

O sistema de validação do MVC foi projetado para ser extensível e flexível, permitindo que você determine em uma base de solicitação quais validadores se aplicam a um determinado modelo.MVC's validation system is designed to be extensible and flexible, allowing you to determine on a per request basis which validators apply to a given model. Isso é ótimo para a criação de provedores de validação complexa.This is great for authoring complex validation providers. No entanto, no caso mais comum, um aplicativo usa apenas os validadores internos e não requer essa flexibilidade extra.However, in the most common case an application only uses the built-in validators and don't require this extra flexibility. Validadores internos incluem DataAnnotations como [Required] e [StringLength], e IValidatableObject.Built-in validators include DataAnnotations such as [Required] and [StringLength], and IValidatableObject.

No ASP.NET Core 2.2, o MVC poderá causar um curto-circuito na validação se ele determinar que um grafo de modelo fornecido não exige validação.In ASP.NET Core 2.2, MVC can short-circuit validation if it determines that a given model graph doesn't require validation. Ignorar a validação resulta em melhorias significativas ao validar modelos que não podem ou não têm nenhum validador.Skipping validation results in significant improvements when validating models that can't or don't have any validators. Isso inclui objetos, como coleções de primitivos (como byte[], string[], Dictionary<string, string>), ou grafos de objeto complexo sem muitos validadores.This includes objects such as collections of primitives (such as byte[], string[], Dictionary<string, string>), or complex object graphs without many validators.

Desempenho do Cliente HTTPHTTP Client performance

No ASP.NET Core 2.2, o desempenho do SocketsHttpHandler foi aprimorado, reduzindo a contenção de bloqueio do pool de conexão.In ASP.NET Core 2.2, the performance of SocketsHttpHandler was improved by reducing connection pool locking contention. Para aplicativos que fazem muitas solicitações HTTP de saída, como algumas arquiteturas de microsserviços, a taxa de transferência foi aprimorada.For apps that make many outgoing HTTP requests, such as some microservices architectures, throughput is improved. Sob carga, a taxa de transferência do HttpClient pode ser melhorada em até 60% no Linux e 20% no Windows.Under load, HttpClient throughput can be improved by up to 60% on Linux and 20% on Windows.

Para obter mais informações, confira a solicitação de pull que fez essa melhoria.For more information, see the pull request that made this improvement.

Informações adicionaisAdditional information

Para obter a lista completa de alterações, confira as Notas sobre a versão do ASP.NET Core 2.2.For the complete list of changes, see the ASP.NET Core 2.2 Release Notes.