ASP.NET Core 6.0
Eintrag zuletzt aktualisiert am: 24.11.2022
ASP.NET Core 6.0 ist im Rahmen von
.NET 6.0 am 8.11.2021 erschienen.
Ein
ASP.NET Core-fähiger dynamischer
Webserver, der bisher einigen Programmcode in den Dateien Program.cs und Startup.cs brauchte, lässt sich nun in drei Zeilen Code starten, siehe Listing 1. Microsoft nennt dies das "Minimal
ASP.NET Core Hosting Model".
var app = WebApplication.Create(args);
app.MapGet("/", () => $"Minimaler
Webserver mit {
System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription} auf {
System.Runtime.InteropServices.RuntimeInformation.OSDescription}");
await app.RunAsync();
Listing 1: Minimaler
Webserver in
ASP.NET Core 6.0
Als neuen Standardwebserver beim
Debugging verwendet Microsoft den in
ASP.NET Core mitgelieferten
Kestrel. Ein Umschalten auf den in
Visual Studio mitgelieferten
Internet Information Server Express ist weiterhin möglich. Den kommenden HTTP/3-Standard auf Basis von
QUIC liefert Microsoft als "Preview"-Feature mit [
https://devblogs.microsoft.com/dotnet/http-3-support-in-dotnet-6/]. HTTP/3 kann dabei auch schon für gRPC-Kommunikation eingesetzt werden, was aber für andere Plattformen noch in der Diskussion ist [
https://github.com/grpc/proposal/pull/256].
Die meisten Neuerungen gibt es für die
ASP.NET Core-Variante "Blazor", mit der man nun nicht nur Single-Page-Web-Apps, sondern auch hybride Apps für Windows schreiben kann. Dabei werden Blazor-Anwendung mit
HTML-Oberfläche in einem Webview-
Steuerelement in einer Desktop-Anwendung auf Basis von
Windows Forms oder
Windows Presentation Foundation im gleichen Prozess und
Thread gehostet. Die Webanwendung hat dabei vollen Zugriff auf alle System-
APIs.
MAUI zeigt in seinen Vorschauversionen bereits seit Mai 2021, das dies auch auf
Android,
iOS und macOS möglich ist.
Für
Blazor WebAssembly, bei dem bisher immer .NET Intermediate Language im Browser (langsam) interpretiert wurde, hat Microsoft nun einen optionalen
Ahead-of-Time-Compiler (
AOT) zu
WASM-Bytecode eingebaut. Das beschleunigt zwar den Lauf einer Anwendung erheblich, aber es sind beim Anwendungsstart für die .NET-Laufzeitumgebung und den eigenen Code deutlich mehr Megabytes in den Browser zu hieven, was die ansonsten in Blazor 6.0 erzielten Optimierungen im Bereich der Downloadgröße zu Nichte macht. Mehrere Megabytes in den Browser zu laden, kann im Intranet akzeptabel sein, ist aber im öffentlichen Internet ein KO-Kriterium.
Die Integration zwischen C# und
JavaScript hat Microsoft verbessert: Nun ist schnelleres
Streaming von Daten möglich und eine Blazor-Anwendung lässt sich innerhalb einer
JavaScript-Anwendung rendern. Der Konzern arbeitet auch daran, Blazor-
Komponenten als Standard Web Components bereitzustellen. Das zur Erstellung von
HTML Custom Elements bereitgestellte
NuGet-Paket Microsoft.AspNetCore.Components.CustomElements bleibt aber vorerst im experimentellen Alpha-Stadium. Darüber hinaus vermeidet Blazor 6.0 aber nun an mehr Stellen den Einsatz von
JavaScript, z.B. bei der Manipulation des Head-Elements einer Seite und bei DropDowns mit Mehrfachauswahl.
Für die
Komponentenprogrammierung in Blazor bietet Microsoft nun eine Parameterübernahme aus dem Querystring, Typparameter mit Bedingungen, Pflichtparameter (deren Nicht-Belegung allerdings nur zur Entwicklungszeit zu Warnungen führt) und die aus
React bekannten Error Boundaries zur Fehlerbehandlung sowie ein leichteres dynamisches Render mit der neuen <DynamicComponent>.