Erste Vorschau auf .NET 5.0: wenig Spektakuläres

Microsoft bietet eine erste Vorschauversion von .NET 5.0 an. Die Vereinheitlichung der .NET-Anwendungsarten steht noch aus.

In Pocket speichern vorlesen Druckansicht 17 Kommentare lesen
Erste Vorschau auf .NET 5.0: wenig Spektakuläres

(Bild: Denis Linine/Shutterstock.com)

Lesezeit: 6 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Die erste Vorschauversion von .NET 5.0 trägt die Versionsnummer 5.0.0-preview.1.20120.5 und steht zum kostenfreien Download bereit. Sie umfasst auch eine erste Preview des Webframeworks ASP.NET Core 5.0, des objektrelationalen Mappers Entity Framework Core 5.0 sowie der Core-Varianten des Desktop-Frameworks Windows Presentation Foundation (WPF) und Windows Forms in der Version 5.0.

Die Ausführung des .NET-CLI-Befehls dotnet new zeigt Nutzern, dass gegenüber dem im Dezember 2019 erschienenen Vorgänger .NET Core 3.1 keine neuen Projektarten hinzugekommen sind. Ergänzt hat Microsoft aber – wie letzte Woche angekündigt – die Projektvorlagen, um auch in der neuen Welt WPF und Windows Forms mit Visual Basic NET zu nutzen.

Abbildung 1: Projektvorlagen in .NET 5.0 Preview 1

Abweichend von früheren Gewohnheiten hatte Microsoft bereits im Mai 2019 einen Fahrplan für die Weiterentwicklung seiner Softwareentwicklungsplattform .NET angekündigt. .NET 5.0 soll demnach im November 2020 als lang ersehnte Vereinheitlichung von .NET Framework, Mono und .NET Core erscheinen. Dabei ist .NET 5.0 technisch gesehen der Nachfolger von .NET Core 3.1. Das "Core" entfällt, die Versionsnummer 4 überspringt der Hersteller aus Marketinggründen.

.NET 5.0 soll mit einer einheitlichen Basisklassenbibliothek ("CoreFXBase Class Library") die Grundlage für alle .NET-Anwendungsarten, auch mobile Apps und Spiele sowie Browseranwendungen und Cross-Platform-Desktop-Anwendungen sein. Ebenso umfasste die Ankündigung von 2019 die Ahead-of-Time-Kompilierung und die Interoperabilität mit Java und Objective-C. Alle diese wesentlichen Features sind in der ersten Vorschauversion von .NET 5.0 aber noch nicht enthalten.

Abbildung 2: Pläne für .NET 5.0

In der Laufzeitumgebung von .NET 5.0 hat Microsoft gegenüber .NET Core 3.1 bisher nur wenig geändert. Hauptneuerung ist die Unterstützung für .NET Core in Windows auf ARM64-Prozessen – allerdings zunächst nur für Konsolenanwendungen. Webanwendungen mit ASP.NET Core sollen in Preview 2 erfolgen, WPF und Windows Forms noch später. Im Gegensatz zu anderen Neuerungen in .NET 5.0 will Microsoft die Windows-ARM64-Unterstützung auch auf .NET Core 3.1 zurückportieren.

Zudem hat der Hersteller in die Laufzeitumgebung die einfache Diagnosemöglichkeit für das Laden von Assemblies ergänzt, die es im klassischen .NET Framework gab und die bisher in .NET Core fehlte. In .NET 5.0 kommt dafür das Werkzeug dotnet-trace zum Einsatz. Außerdem hat das .NET-Entwicklungsteam die Geschwindigkeit der Auswertung regulärer Ausdrücke sowie abermals den Just-in-Time-Compiler RyuJIT optimiert. Einige Arbeitszeit wurde bei Microsoft auch dafür eingesetzt, die Vielzahl der bisherigen GitHub-Repositories zu reduzieren. Es gibt nun die zentralen Repositories Runtime, SDK, ASP.NET Core und EFCore.

Die meisten neuen Funktionen findet man in der Vorschau von Version 5.0 des objektrelationalen Mappers Entity Framework Core. Dort hat Microsoft mit der Methode LogTo() nun einen einfachen Weg geschaffen, die zur Datenbank gesendeten SQL-Befehle zu protokollieren. Alternativ dazu können sich Entwickler für eine einzelne LINQ-Abfrage die korrespondiere SQL-Zeichenkette mit ToQueryString() liefern lassen. Ebenfalls zur vereinfachten Diagnose hat der Hersteller die bisherige Ansicht Model.DebugView in eine Kurzform in Model.DebugView.ShortView und die bisherige Ansicht unter Model.DebugView.LongView aufgetrennt. Die namensgleichen Eigenschaften gibt es auch noch mal unter ChangeTracker.StateManager.DebugView. Hier können Entwickler für jedes mit dem Entity-Framework-Core-Kontext verbundene Objekt den Zustand und die Veränderungen seit dem letzten Speichern einsehen.

Mit der neuen Methode IsRelational() können Entwickler prüfen, ob sie mit einer relationalen Datenbank arbeiten. Das ergibt Sinn, seit Entity Framework Core auch NoSQL-Datenbanken unterstützt. Seit der Version 3.0 unterstützt Entity Framework Core Tabellen und Sichten in der Datenbank, die keine Primärschlüsselspalte umfassen. Anstelle der Festlegung in der Fluent-API per Methode HasNoKey() können Entwickler jetzt auch die Annotation [Keyless] über der Entitätsklasse verwenden. Beim Einsatz von Runtime Proxies im NuGet-Paket Microsoft.EntityFrameworkCore.Proxies können Entwickler sich nun auch dafür entscheiden, die Änderungsverfolgung auf Basis der Schnittstellen INotifyPropertyChanging und INotifyPropertyChanged statt durch einen Vergleich des Objekts mit seinem Ausgangszustand zu realisieren.

Bei der Übersetzung von LINQ in SQL bietet Entity Framework Core nun Unterstützung für bitweise Operatoren, die .NET-Methoden Contains(), Length() und SequenceEqual() für Byte-Arrays sowie die Sortiermethode Reverse(). Außerdem können Softwareentwickler über die Klasse Entity Framework nun auch die SQL-Funktionen DateDiffWeek() und DateFromParts() direkt aufrufen.

Für ASP.NET Core gibt es keine neuen Features, sondern nur Fehlerbehebungen. ASP.NET Core Blazor WebAssembly ist nicht im Produkt enthalten, sondern muss getrennt installiert werden. Dort ist die aktuelle Version 3.2 Preview 2 vom 10. März 2020.

Die .NET-Roadmap auf GitHub zeigt nur den Erscheinungstermin November 2020 und gibt keine Auskünfte über die Vorschauversionsplanung bis dahin. Es ist aber zu erwarten, dass Microsoft spätestens auf der Build-Konferenz 2020 die angekündigte Konsolidierung der .NET-Anwendungsarten zeigen wird. Diese findet trotz der Covid-19-Pandemie vom 19. bis 21. Mai 2020 statt, allerdings nicht mehr als Präsenzveranstaltung, sondern dieses Mal ausschließlich per kostenfreiem Streaming. Die zahlenden Teilnehmer erhalten ihr Geld zurück. (sih)