Neuerungen in ASP.NET Core 2.2What's new in ASP.NET Core 2.2

In diesem Artikel werden die wichtigsten Änderungen in ASP.NET Core 2.2 hervorgehoben und Links zu relevanter Dokumentation bereitgestellt.This article highlights the most significant changes in ASP.NET Core 2.2, with links to relevant documentation.

OpenAPI-Analysetools und -KonventionenOpenAPI Analyzers & Conventions

OpenAPI (früher Swagger) ist eine sprachunabhängige Spezifikation für das Beschreiben von REST-APIs.OpenAPI (formerly known as Swagger) is a language-agnostic specification for describing REST APIs. Das OpenAPI-Ökosystem verfügt über Tools, mit dem sich Clientcode mithilfe der Spezifikation ermitteln, testen und erzeugen lässt.The OpenAPI ecosystem has tools that allow for discovering, testing, and producing client code using the specification. Unterstützung für das Generieren und Visualisieren von OpenAPI-Dokumenten in ASP.NET Core MVC wird über in der Community entstandene Projekte wie NSwag und Swashbuckle.AspNetCore bereitgestellt.Support for generating and visualizing OpenAPI documents in ASP.NET Core MVC is provided via community driven projects such as NSwag, and Swashbuckle.AspNetCore. ASP.NET Core 2.2 bietet verbesserte Tools und Runtimefunktionen für die Erstellung von OpenAPI-Dokumenten.ASP.NET Core 2.2 provides improved tooling and runtime experiences for creating OpenAPI documents.

Weitere Informationen finden Sie in den folgenden Ressourcen:For more information, see the following resources:

Unterstützung bei ProblemdetailsProblem details support

In ASP.NET Core 2.1 wurde ProblemDetails eingeführt, basierend auf der RFC 7807-Spezifikation für die Übertragung von Fehlerdetails mit einer HTTP-Antwort.ASP.NET Core 2.1 introduced ProblemDetails, based on the RFC 7807 specification for carrying details of an error with an HTTP Response. In 2.2 ist ProblemDetails die Standardantwort für Clientfehlercodes in Controllern mit dem ApiControllerAttribute.In 2.2, ProblemDetails is the standard response for client error codes in controllers attributed with ApiControllerAttribute. Ein IActionResult, das einen Statuscode für Clientfehler (4xx) zurückgegeben hat, gibt jetzt einen ProblemDetails-Text zurück.An IActionResult returning a client error status code (4xx) now returns a ProblemDetails body. Das Ergebnis enthält auch eine Korrelations-ID, die zum Korrelieren des Fehlers mithilfe von Anforderungsprotokollen verwendet werden kann.The result also includes a correlation ID that can be used to correlate the error using request logs. Bei Clientfehlern verwendet ProducesResponseType standardmäßig ProblemDetails als Antworttyp.For client errors, ProducesResponseType defaults to using ProblemDetails as the response type. Dies wird in der OpenAPI- bzw. Swagger-Ausgabe dokumentiert, die mit NSwag oder Swashbuckle.AspNetCore generiert wird.This is documented in OpenAPI / Swagger output generated using NSwag or Swashbuckle.AspNetCore.

EndpunktroutingEndpoint Routing

ASP.NET Core 2.2 verwendet ein neues System für das Endpunktrouting zum verbesserten Verteilen von Anforderungen.ASP.NET Core 2.2 uses a new endpoint routing system for improved dispatching of requests. Die Änderungen umfassen neue API-Elemente für das Generieren von Links sowie Transformatoren für Routenparameter.The changes include new link generation API members and route parameter transformers.

Weitere Informationen finden Sie in den folgenden Ressourcen:For more information, see the following resources:

IntegritätsprüfungenHealth checks

Ein neuer Dienst für Integritätsprüfungen vereinfacht die Verwendung von ASP.NET Core in Umgebungen, in denen Integritätsprüfungen erforderlich sind, wie z.B. Kubernetes.A new health checks service makes it easier to use ASP.NET Core in environments that require health checks, such as Kubernetes. Integritätsprüfungen umfassen Middleware und einen Satz Bibliotheken, die eine Abstraktion und einen Dienst für IHealthCheck definieren.Health checks includes middleware and a set of libraries that define an IHealthCheck abstraction and service.

Integritätsprüfungen werden von einem Containerorchestrator oder Lastenausgleichsmodul verwendet, um schnell zu ermitteln, ob ein System normal auf Anforderung reagiert.Health checks are used by a container orchestrator or load balancer to quickly determine if a system is responding to requests normally. Ein Containerorchestrator kann auf eine fehlerhafte Integritätsprüfung reagieren, indem die Ausführung einer Bereitstellung angehalten oder ein Container neu gestartet wird.A container orchestrator might respond to a failing health check by halting a rolling deployment or restarting a container. Ein Lastenausgleichsmodul kann auf eine Integritätsprüfung reagieren, indem Datenverkehr von der fehlerhaften Instanz des Diensts weggeleitet wird.A load balancer might respond to a health check by routing traffic away from the failing instance of the service.

Integritätsprüfungen werden von einer Anwendung als HTTP-Endpunkt verfügbar gemacht, der von Überwachungssystemen verwendet wird.Health checks are exposed by an application as an HTTP endpoint used by monitoring systems. Integritätsprüfungen können für eine Vielzahl von Echtzeit-Überwachungsszenarien und -Überwachungssystemen konfiguriert werden.Health checks can be configured for a variety of real-time monitoring scenarios and monitoring systems. Der Integritätsprüfungsdienst lässt sich in das BeatPulse-Projekt integrieren.The health checks service integrates with the BeatPulse project. Damit lassen sich Überprüfungen für Dutzende von beliebten Systemen und Abhängigkeiten einfacher hinzufügen.which makes it easier to add checks for dozens of popular systems and dependencies.

Weitere Informationen finden Sie unter Integritätsprüfungen in ASP.NET Core.For more information, see Health checks in ASP.NET Core.

HTTP/2 in KestrelHTTP/2 in Kestrel

In ASP.NET Core 2.2 wurde Unterstützung für HTTP/2 hinzugefügt.ASP.NET Core 2.2 adds support for HTTP/2.

HTTP/2 ist eine umfassende Überarbeitung des HTTP-Protokolls.HTTP/2 is a major revision of the HTTP protocol. Einige der wichtigsten Features von HTTP/2 sind die Unterstützung für die Headerkomprimierung und Streams mit vollständigem Multiplexing über eine einzige Verbindung.Some of the notable features of HTTP/2 are support for header compression and fully multiplexed streams over a single connection. HTTP/2 behält zwar die HTTP-Semantik bei (HTTP-Header, Methoden usw.), ist aber im Vergleich zu HTTP/1.x ein Breaking Change in Bezug darauf, wie Daten in Frames aufgeteilt und über das Netzwerk gesendet werden.While HTTP/2 preserves HTTP’s semantics (HTTP headers, methods, etc) it's a breaking change from HTTP/1.x on how this data is framed and sent over the wire.

Aufgrund dieser Änderung bei der Frameerstellung müssen Server und Clients die verwendete Protokollversion aushandeln.As a consequence of this change in framing, servers and clients need to negotiate the protocol version used. Application-Layer Protocol Negotiation (ALPN) ist eine TLS-Erweiterung, die es dem Server und dem Client ermöglicht, die verwendete Protokollversion im Rahmen des TLS-Handshakes auszuhandeln.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. Es ist zwar möglich, dass Server und Client das Protokoll vorher kennen, aber alle wichtigen Browser unterstützt ALPN als einzige Möglichkeit, eine HTTP/2-Verbindung herzustellen.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.

Weitere Informationen finden Sie unter HTTP/2-Unterstützung.For more information, see HTTP/2 support.

Kestrel-KonfigurationKestrel configuration

In früheren Versionen von ASP.NET Core werden Kestrel-Optionen durch Aufrufen von UseKestrel konfiguriert.In earlier versions of ASP.NET Core, Kestrel options are configured by calling UseKestrel. In 2.2 werden Kestrel-Optionen durch Aufrufen von ConfigureKestrel auf dem Hostgenerator konfiguriert.In 2.2, Kestrel options are configured by calling ConfigureKestrel on the host builder. Diese Änderung löst ein Problem mit der Reihenfolge von IServer-Registrierungen für das In-Process-Hosting.This change resolves an issue with the order of IServer registrations for in-process hosting. Weitere Informationen finden Sie in den folgenden Ressourcen:For more information, see the following resources:

IIS-In-Process-HostingIIS in-process hosting

In früheren Versionen von ASP.NET Core dient IIS als Reverseproxy.In earlier versions of ASP.NET Core, IIS serves as a reverse proxy. In 2.2 kann das ASP.NET Core-Modul die CoreCLR starten und eine App im IIS-Workerprozess (w3wp.exe) hosten.In 2.2, the ASP.NET Core Module can boot the CoreCLR and host an app inside the IIS worker process (w3wp.exe). Das In-Process-Hosting verbessert die Leistung und Diagnose beim Ausführen mit IIS.In-process hosting provides performance and diagnostic gains when running with IIS.

Weitere Informationen finden Sie unter In-Process-Hosting für IIS.For more information, see in-process hosting for IIS.

Java-Client für SignalRSignalR Java client

ASP.NET Core 2.2 führt einen Java-Client für SignalR ein.ASP.NET Core 2.2 introduces a Java Client for SignalR. Dieser Client unterstützt die Verbindung mit einem ASP.NET Core-SignalR-Server über Java-Code, einschließlich Android-Apps.This client supports connecting to an ASP.NET Core SignalR Server from Java code, including Android apps.

Weitere Informationen finden Sie unter ASP.NET Core-SignalR-Java-Client.For more information, see ASP.NET Core SignalR Java client.

Verbesserungen an CORSCORS improvements

In früheren Versionen von ASP.NET Core ermöglicht CORS-Middleware das Senden von Accept-, Accept-Language-, Content-Language- und Origin-Headern unabhängig von den in CorsPolicy.Headers konfigurierten Werten.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. In 2.2 ist ein Abgleich mit einer CORS-Middleware-Richtlinie nur möglich, wenn die in Access-Control-Request-Headers gesendeten Header exakt mit den in WithHeaders angegebenen Headern übereinstimmen.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.

Weitere Informationen finden Sie unter CORS-Middleware.For more information, see CORS Middleware.

AntwortkomprimierungResponse compression

ASP.NET Core 2.2 kann Antworten mit dem Brotli-Komprimierungsformat komprimieren.ASP.NET Core 2.2 can compress responses with the Brotli compression format.

Weitere Informationen finden Sie unter Middleware für die Antwortkomprimierung unterstützt die Brotli-Komprimierung.For more information, see Response Compression Middleware supports Brotli compression.

ProjektvorlagenProject templates

ASP.NET Core-Webprojektvorlagen wurden auf Bootstrap 4 und Angular 6 aktualisiert.ASP.NET Core web project templates were updated to Bootstrap 4 and Angular 6. Der neue Look ist optisch vereinfacht, sodass Sie die wichtigen Strukturen einer App leichter erkennen können.The new look is visually simpler and makes it easier to see the important structures of the app.

Start- oder Indexseite

Leistung bei der ÜberprüfungValidation performance

Das Überprüfungssystem von MVC ist erweiterbar und flexibel und ermöglicht es Ihnen, für jede Anforderung zu festzulegen, welche Validierungssteuerelemente für ein bestimmtes Modell gelten.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. Dies ist sehr nützlich für die Erstellung von komplexen Validierungsanbietern.This is great for authoring complex validation providers. In den meisten Fällen verwendet eine Anwendung jedoch nur die integrierten Validierungssteuerelemente und benötigt diese zusätzliche Flexibilität nicht.However, in the most common case an application only uses the built-in validators and don’t require this extra flexibility. Integrierte Validierungssteuerelemente umfassen Datenanmerkungen wie [Required], [StringLength] und IValidatableObject.Built-in validators include DataAnnotations such as [Required] and [StringLength], and IValidatableObject.

In ASP.NET Core 2.2 kann MVC die Überprüfung kurzschließen, wenn festgestellt wird, dass ein bestimmter Modellgraph keine Überprüfung erfordert.In ASP.NET Core 2.2, MVC can short-circuit validation if it determines that a given model graph doesn't require validation. Das Überspringen von Überprüfungsergebnissen bietet erhebliche Verbesserungen beim Überprüfen von Modellen, die keine Validierungssteuerelemente besitzen oder besitzen können.Skipping validation results in significant improvements when validating models that can't or don't have any validators. Hierzu gehören Objekte wie Sammlungen von primitiven (z.B. byte[], string[] und Dictionary<string, string>) oder komplexen Objektgraphen mit einer geringen Anzahl von Validierungssteuerelementen.This includes objects such as collections of primitives (such as byte[], string[], Dictionary<string, string>), or complex object graphs without many validators.

Leistung von HTTP-ClientsHTTP Client performance

In ASP.NET Core 2.2 wurde die Leistung von SocketsHttpHandler verbessert, indem Sperrkonflikte für den Verbindungspool reduziert wurden.In ASP.NET Core 2.2, the performance of SocketsHttpHandler was improved by reducing connection pool locking contention. Bei Apps, die viele ausgehende HTTP-Anforderungen senden – beispielsweise Microservicearchitekturen – wird der Durchsatz verbessert.For apps that make many outgoing HTTP requests, such as some microservices architectures, throughput is improved. Unter Last kann der HttpClient-Durchsatz um bis zu 60 % unter Linux und bis zu 20 % unter Windows gesteigert werden.Under load, HttpClient throughput can be improved by up to 60% on Linux and 20% on Windows.

Weitere Informationen finden Sie beim Pull Request, durch den diese Verbesserung erzielt wurde.For more information, see the pull request that made this improvement.

Zusätzliche InformationenAdditional information

Die vollständige Liste der Änderungen finden Sie in den Versionshinweisen zu ASP.NET Core 2.2.For the complete list of changes, see the ASP.NET Core 2.2 Release Notes.