.NET 5: Zweite Preview bringt kleine Verbesserungen

Die zweite Vorschauversion von .NET 5.0 bringt Leistungsverbesserungen und kleinere neue Funktionen, bleibt die Konsolidierung aber weiter schuldig.

In Pocket speichern vorlesen Druckansicht 3 Kommentare lesen
.NET 5: Zweite Preview mit viel Feinschliff erschienen
Lesezeit: 5 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Lediglich zwei Wochen nach der ersten Vorschau auf das konsolidierte .NET 5.0 folgt nun die zweite Preview. Das aktuelle Release konzentriert sich auf Leistungsverbesserungen im Just-in-Time-Compiler "RuyJIT" und dem in die .NET-Laufzeitumgebung integrierten Garbage Collector.

Der Garbage Collector verbessert unter anderem den Umgang mit sogenannten Pinned Objects, also angehefteten Objekten, die man in C# mit dem Schlüsselwort fixed erstellt (nur in unsafe-Programmcodeblöcken erlaubt). Sie dürfen bei einer Garbage Collection nicht in andere Speicherbereiche verschoben werden.

Für die Pinned Objects führt Microsoft in .NET 5.0 Preview 2 eine separate Behandlung bei der Speicherverwaltung in einem eigenen Hauptspeicherbereich (Pinned Objects Heap – POH) ein. Die bisherigen Generationen-Heaps (0 bis 2, siehe Fundamentals of Garbage Collection) müssen damit keine Sonderbehandlung für die Pinned Objects mehr durchführen. Bisher schon gab es einen eigenen Heap für große .NET-Objekte (Large Object Heap - LOH).

Wie üblich ist parallel zu .NET Core 5.0 Preview 2 auch eine Version von ASP.NET Core und Entity Framework Core erschienen. Letzteres brachte in der ersten Preview die meisten neuen Features mit. Während es in ASP.NET Core 5.0 Preview 2 laut Blogeintrag nur Bugfixes gibt, bietet Entity Framework Core 5.0 die neue Annotation BackingField, mit der Softwareentwickler in einer Entitätsklasse für eine Property das korrespondierende Field definieren können, wenn der OR-Mapper nicht automatisch das zugehörige Field ermitteln kann.

Bei der Abbildung von Vererbungen nach dem Table-per-Hierarchy-Prinzip (TPH) erzeugt Entity Framework Core nun effizienteren SQL-Code ohne Bedingung, wenn per LINQ-Abfrage Instanzen aller abgeleiteten Klassen angefordert werden. Microsoft nennt diesen Fall "Complete Discriminator Mapping". Außerdem bietet der Datenzugriff auf SQLite-Datenbanken Optimierungen, insbesondere für den Zugriff auf Zeichenketten- und Binärspalten.

Entity Framework Core 5.0 Preview 1 läuft nicht nur auf .NET Core 5.0, sondern auch auf .NET Core 3.1 und anderen Plattformen, die .NET Standard 2.1 realisieren. Microsoft behält sich jedoch vor, dies künftig zu ändern.

Definitiv ausgeschlossen von Entity Framework Core 5.0 soll das klassische .NET Framework sein. Hier hat Microsoft in der Vergangenheit mehrfach die Strategie geändert: Entity Framework Core 1.0, 1.1, 2.0, 2.1 und 2.2 liefen auf dem .NET Framework. Mit Entity Framework Core 3.0 hat Microsoft die klassischen .NET-Entwickler plötzlich ausgeschlossen, dann aber auf deren Drängen Entity Framework Core 3.1 wieder auf .NET Framework zum Laufen gebracht. Dabei hatte das Unternehmen aber auf GitHub klargestellt, dass es sich um eine letzte Ausnahme handelte.

Für Webentwickler hat Microsoft den Bruch mit .NET Framework als Plattform für ASP.NET Core in der Version 3.0 vollzogen und auch nicht wieder zurückgenommen. Webentwickler können das aktuelle ASP.NET Core 3.1 nur noch auf .NET Core 3.1 bzw. ASP.NET Core 5.0 auf .NET 5.0 betreiben. Das klassische ASP.NET läuft wie bisher auf dem klassischen .NET Framework.

Microsoft hatte im Mai 2019 bekannt gegeben, dass das .NET Framework 4.8 die letzte Version der klassischen .NET-Entwicklungslinie war. Zur Beruhigung der Entwicklergemeinde stellte das Unternehmen jedoch klar, dass .NET Framework Version 4.8 dauerhaft in Windows enthalten sein werde und dass es Probleme im Bereich Sicherheit und Zuverlässigkeit weiterhin beheben wolle. Mit dem Umstieg von .NET Framework auf .NET Core beschäftigt sich derzeit eine fünfteilige Artikelserie auf heise developer.

Das Hauptthema in .NET 5.0 soll die Konsolidierung von .NET Framework, .NET Core und Mono/Xamarin zu einer gemeinsamen Plattform sein. Während die Integration von Funktionen aus dem klassischen .NET Framework (.NET Framework API Porting Project) laut Microsoft-Manager Immo Landwerth schon mit .NET Core 3.0 abgeschlossen war, ist die Integration von Mono und dem darauf aufbauenden Cross-Plattform-Framework Xamarin im Rahmen von .NET 5.0 geplant. Das .NET-Team will die Basisklassenbibliothek und das Software Development Kit (SDK) so zusammenfassen, dass alle .NET-Anwendungsarten es nutzen können.

Die vereinheitlichte Architektur in .NET 5

In einem Eintrag im .NET Blog findet man eine Liste der einzelnen Änderungen mit Verweisen auf korrespondierende GitHub Issues. Die Preview steht wie üblich zum kostenfreien Download ohne Registrierung zur Verfügung. (rme)