Build 2021: .NET 6 Preview 4 mit Werkzeugen für Cross-Plattform-Entwicklung

Im Rahmen der Online-Konferenz hat Microsoft die vierte Vorschauversion auf .NET 6 vorgelegt, die Cross-Plattform-Entwicklung mit MAUI unterstützt.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 2 Beiträge

(Bild: pio3/Shutterstock.com)

Von
  • Dr. Holger Schwichtenberg

Nach Preview 1 Mitte Februar, Preview 2 Mitte März und Preview 3 Anfang April hat sich Microsoft für das Fertigstellen der vierten Vorschauversion einen Monat länger Programmierzeit gegönnt.

Preview 4 ermöglicht in Verbindung mit der aktuellen, ebenfalls frisch veröffentlichten Vorschauversion von Visual Studio 2019 Version 16.11 Preview 1 erstmals, Cross-Plattform-Anwendungen mit .NET Multi-Platform App UI (MAUI) für iOS, Android, Windows und macOS innerhalb der Entwicklungsumgebung zu erstellen und zu kompilieren. In den bisherigen Preview-Versionen war die Übersetzung nur per Kommandozeile möglich.

In dieser Version von Visual Studio funktioniert das in Preview 3 eingeführte Hot Reloading nicht nur für Webanwendungen, sondern auch Windows-Applikationen einschließlich MAUI auf Windows. Andere Plattformen will Microsoft erst in kommenden Preview-Versionen freischalten. Zudem unterstützt MAUI nun mit dem Steuerelement BlazorWebView hybride Apps; Entwicklerinnen und Entwickler können eine Blazor-Webanwendung innerhalb einer MAUI-Anwendung betreiben.

Ein von .NET-affinen Webentwicklern lang ersehntes Feature ist die Ahead-of-Time-Kompilierung (AOT) für Blazor WebAssembly: Durch eine optionale Einstellung erzeugt der Compiler auf Wunsch direkt WebAssembly-Bytecode. Bisher wurde immer Code in Microsoft Intermediate Language (MSIL) zum Browser gesendet, den dieser nur träge interpretieren konnte. Die Code-Ausführung soll durch AOT um den Faktor 5 schneller werden, allerdings steigt die Größe der Anwendung um den Faktor 2, was die ohnehin schon unbefriedigende Startzeit von Blazor WebAssembly-Anwendungen weiter verschlechtert, sodass Entwicklerinnen und Entwickler abwägen müssen, ob AOT für ihre Anwendung sinnvoll ist.

Leistungsvorteil von AOT bei Blazor WebAssembly.

(Bild: devblogs.microsoft )

Aus React hat sich Microsoft das Konzept der "Error Boundaries" für Blazor abgeschaut: Damit lassen sich Fehler für Razor Component und deren Kindkomponenten nun getrennt abfangen und eine alternative Darstellung im Fehlerfall erzeugen.

Für ASP.NET Core gibt es nun die Möglichkeit, mit weniger als zehn Zeilen Programmcode einen HTTP-Endpunkt inklusive Prozesshost zu schreiben.

Entity Framework Core 6 ist ebenfalls als Preview 4 erschienen. Das Entwicklungsteam hat die zwei Monate seit Preview 3 für Performance-Optimierungen genutzt und glänzt nun mit 70 Prozent Leistungszuwachs im TechEmpower-Benchmark "Fortnunes" im Vergleich zur stabilen Version 5.0, die im November 2021 erschienen ist. Nur 31 Prozent dieses Leistungszuwachses basieren aber auf dem OR-Mapper selbst; der Rest der Leistungssteigerung stammt aus Verbesserungen der darunterliegenden Runtime und Basisklassen. Ziel des Entwicklungsteams ist es, sich möglichst nah an die Leistung des Micro-OR-Mappers "Dapper" anzunähern; dies ist im Benchmark bis auf 5 Prozent gelungen. Details dazu erläutert das Entwicklungsteam in einem Blogeintrag.

In .NET 6 Preview 4 liefert Microsoft auch Funktionen für die Basisklassenbibliothek aus, in der sich in den letzten Versionen nicht mehr viel getan hatte. So gibt es neue Datentypen DateOnly und TimeOnly in Ergänzung zum bisherigen gemischten DateTime-Typ. In der in .NET Framework 3.5 eingeführten Language Integrated Query (LINQ) ergänzt Microsoft Unterstützung für die Operatoren Index und Range, die es seit C# 8.0 gibt. Bisher bekannte Operatoren hat Microsoft ergänzt um neue Varianten: DistinctBy, UnionBy, IntersectBy, ExceptBy, MaxBy und MinBy. Der neue Operator Chunk() teilt Mengen in gleich große Gruppen auf. FirstOrDefault(), LastOrDefault() und SingleOrDefault() können nun andere Werte als Null liefern für den Fall, dass die Menge leer ist.

Der JSON-Serializer System.Text.Json unterstützt nun auch asynchrone Serialisierung und Deserialisierung mit IAsyncEnumerable<T> sowie einen schreibenden Zugriff auf ein JSON-Dokument im Stil des HTML-Document Object Models in Ergänzung zu den bisherigen Klassen JsonDocument und JsonElement.

Auch in dem .NET 6 SDK gibt es Verbesserungen: So hat Microsoft das Tree Shaking optimiert und führt nun im Standard ein Trimming auf Klassen- und Mitgliedsebene aus, das in .NET 5 noch optional war. Dort fand im Standard das Trimming nur auf Assembly-Ebene statt. Beim Single-File-Publishing können Entwicklerinnen und Entwickler optional eine Komprimierung aktivieren, die die Dateigröße erheblich reduziert. Dabei steigt jedoch die Startzeit der Anwendung. Beim Anlegen neuer Projekte an der Kommandozeile mit dotnet new gibt es nun eine Suchfunktion für Projektvorlagen auf NuGet.org.

Die fertige Version von .NET 6 soll im November 2021 erscheinen und ein Long-term Support (LTS) für drei Jahre erhalten.

(map)