Microsoft liefert .NET 6 aus

Die neue Version bietet hybride Apps, Erweiterungen bei den Basisklassen sowie Verbesserungen von Entwicklerproduktivität und Laufzeitverhalten.

In Pocket speichern vorlesen Druckansicht 13 Kommentare lesen

(Bild: Denis Linine/Shutterstock.com)

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

Im Rahmen der .NET Conf 2021 hat Microsoft die Verfügbarkeit von .NET 6 "RTM" bekannt gegeben. Zu den Highlights in .NET 6 gehört die Hot Reload-Funktion, die Microsoft für die meisten Anwendungsarten anbietet. Entwicklerinnen und Entwickler können damit Programmcodeänderungen an einer laufenden Anwendung durchführen, ohne dass sie neu gestartet werden muss und ihren Zustand verliert.

Chronik der .NET-6-Entwicklung

Kurz vor Torschluss wollte Microsoft diese Produktivitätsfunktion auf Nutzer von Visual Studio 2022 (und damit auf zahlende Kunden und das Windows-Betriebssystem) begrenzen. Nach heftiger Kritik der Kunden ist der Konzern aber nur drei Tage später komplett zurückgerudert und bietet nun Hot Reload auch mit dem plattformneutralen und kostenfreien Kommandozeilenwerkzeug dotnet watch an. In beiden Werkzeugen gibt es aber noch Einschränkungen hinsichtlich der erlaubten Änderungen.

Wie schon bei den Vorgängerversionen hat Microsoft erneut viel Arbeit in die Geschwindigkeitsoptimierung von Laufzeitumgebung und Klassenbibliothek investiert. Ein umfangreiches Dokument beschreibt die zahlreichen Verbesserungen der Basisklassenbibliothek. Auch bei den .NET-CLI-Befehlen wie dotnet new, dotnet build und dotnet run gibt es Optimierungen.

Bei der Erstellung von WebAPIs können Entwickler die Daten von der Datenbank bis zum JSON-Serializer System.Text.Json via IAsyncEnumerable<T> streamen, was den Speicher-Overhead einer Pufferung vermeidet. Zur Beschleunigung der JSON-(De)-Serialisierung kann er zudem einen Source Code Generator einsetzen, der den Serialisierungscode schon zur Entwicklungszeit erzeugt.

Für im Browser laufende C#-Anwendungen bietet Microsoft Blazor WebAssembly als Ahead-Of-Time-kompilierte Variante an. Dabei wird nicht mehr noch zu interpretierender Microsoft Intermediate Language-Code, sondern direkt WebAssembly-Byte-Code in den Browser geladen. Das ehrgeizige Projekt, alternativ zum Just-In-Time-Compiler einen allgemeinen AOT-Compiler für alle .NET-Anwendungsarten anzubieten, ist hingegen vorerst gescheitert und dümpelt weiterhin nur als ein Experiment auf GitHub herum (siehe NativeAOT)

Erstmal seit Jahren bietet Microsoft einen größeren Strauß an Neuerungen in der .NET-Basisklassenbibliothek. Dazu gehören die neuen Datentypen DateOnly und TimeOnly, die neuen LINQ-Operatoren DistinctBy(), UnionBy(), IntersectBy(), ExceptBy(), MaxBy(), MinBy() und Chunk() sowie eine FIFO-Menge mit Prioritäten beim Auslagern: PriorityQueue<T, TPrio>.

Spannend ist, dass Microsoft in die .NET 6-Basisklassenbibliothek Low-Level-Operationen eingefügt hat, die bisher in .NET verpönt waren. Dazu gehört die direkte Speicherallokation mit der Klasse System.Runtime.InteropServices.NativeMemory sowie der Low-Level-Dateisystemzugriff ohne Stream mit der Klasse System.IO.RandomAccess.

.NET 6: Online-Event zum neuen LTS-Release
Online-Konferenz zu .NET 6 am 23.11.2021, von Heise und IT-Visions.de zum neuen LTS-Release

Am 23. November 2021 veranstalten Heise und Dr. Holger Schwichtenbergs Firma IT-Visions.de ein Online-Event zum neuen LTS-Relase: .NET 6 ist die Basis für alle Programme, die auf Microsofts Entwicklungsplattform aufbauen. Die Online-Konferenz verschafft einen Überblick und hilft beim Abwägen, ob sich der Wechsel bereits lohnt.

Darum geht es:

  • Migration: Wann und wie man auf .NET 6 umsteigen sollte
  • Was ist neu in .NET 6?
  • Neue Features von ASP.NET Core 6 und Blazor 6 kennen lernen
  • Wichtigste Neuerungen in C# 10
  • WinUI 3 in den eigenen Anwendungen einsetzen
  • Ausblick auf .NET 7

Ein Tag geballte .NET-Erfahrung

Ausgewiesene .NET- und C#-Experten präsentieren einen Tag lang online die Neuigkeiten der LTS- Version und beantworten in den Talks sowie direkten Fragerunden die Anliegen der Teilnehmenden rings um das neue Release und die anstehende Migration. Neben sieben 45-minütigen Fachvorträgen moderiert Dr. Holger Schwichtenberg eine Frage- und Diskussionsrunde. Flankierend lässt sich am 25. November das Gelernte in einem Praxis-Workshop bei ihm vertiefen (der Workshop ist ausverkauft, Interessierte können sich auf die Warteliste setzen lassen).

Konferenztickets sind zum Preis von 199 Euro (zzgl. 19 % MwSt.) erhältlich, und für Gruppen, Schüler sowie Studierende gibt es auf Nachfrage einen Nachlass. Weitere Informationen lassen sich dem Konferenzprogramm entnehmen.

Der JSON-Serializer System.Text.Json bietet jetzt eine definierbare Serialisierungsreihenfolge für Properties, das Ignorieren von zirkulären Referenzen und Ereignisse in zu serialisierenden Objekten. Zudem gibt es innerhalb dieser Bibliothek eine neue Programmierschnittstelle System.Text.Json.Nodes für den lesenden und schreibenden Zugriff auf ein JSON-Dokument im Stil des HTML-DOM.

Zur Verschlüsselung bietet .NET 6 zusätzlich den symmetrischen Algorithmus ChaCha20-Poly1305 nach RFC 8439. Als plattformneutrale Alternative zu den Windows Performance Countern liefert .NET 6 nun eine Implementierung von Open Telemetry. Den kommenden HTTP/3-Standard auf Basis von QUIC liefert Microsoft als Preview-Feature mit.

Die rot markierten Teile von .NET 6 sind auf Mitte 2022 vertagt (Abb. 1).

Abermals vertagt ist die ursprünglich schon für .NET 5.0 angekündigte endgültige Vereinigung von .NET Framework, .NET Core und Mono/Xamarin. Schon im September 2021 stellte das .NET-Produktmanagement klar, dass man das .NET Multi-Platform App UI (.NET MAUI) für Windows, Android, iOS und macOS nicht rechtzeitig fertigkriegen wird und vertröstete in einem Blogeintrag die Entwicklergemeinde auf das nächste Jahr (s. Abb. 1 und 2). Laut Roadmap ist die fertige Version nun für das 2. Quartal 2022 geplant.

Die Zusammenführung von .NET Framework, .NET Core und Mono/Xamarin soll nun erst 2022 stattfinden (Abb. 2).

Ein Schritt in Richtung Cross-Platform-GUI sind aber die in .NET 6 unterstützten hybriden Apps. Entwickler können eine Blazor-basierte Webanwendung, die auf HTML, CSS und C# (optional auch JavaScript) beruht, in eine .NET-basierte Desktop-Anwendung mit Windows Forms oder Windows Presentation Foundation integrieren. Das funktioniert zunächst nur auf Windows, mit dem Erscheinen von .NET MAUI nächstes Jahr dann aber auch auf allen von MAUI unterstützen Betriebssystemen. Dazu gehört aber vorerst leider nicht der Linux-Desktop, dessen Bedeutung Microsoft trotz aller Plattformneutralität bei Servern weiterhin zu übersehen scheint.

Eines der Microsoft-Ziele für .NET 6 war es, den Einstieg in die Plattform für neue Entwickler einfacher zu machen. Was Microsoft unter "einfacher" versteht, sieht man sofort, wenn man ein neues .NET 6-Projekt anlegt: Der Startcode der Anwendungen wurde erheblich eingedampft. Eine Klasse und einen Main()-Einsprungpunkt sucht man vergeblich – das Programm startet beim ersten frei stehenden Befehl, den der Compiler findet, und hat Zugriff auf eine magische Variable "args", die aus dem Nichts kommt. Die Standardnamensräume von .NET lassen sich automatisch importieren.

Nicht allen .NET-Entwicklern gefällt diese Mischung aus Minimalismus und Magie. Wer will, kann die altbewährte, explizite Programmstruktur selbst wieder anlegen.

Auch ohne MAUI ist .NET 6 interessant für die .NET-Entwicklergemeinde, denn die Version bietet neben zahlreichen neuen Funktionen auch einen "Long-Term-Support". Als lang bezeichnet Microsoft in seiner agilen Philosophie drei Jahre, in denen der Hersteller die Entwickler mit regelmäßigen Updates im Bereich Fehlerbehebung und Sicherheit versorgt. Den Support für den im November 2020 erschienenen Vorgänger .NET 5.0 wird Microsoft hingegen schon im Februar 2022 wieder einstellen (s. Abb. 3).

In den kommenden Weihnachtsferien stehen also Migrationen an – zum Glück ist die Liste der Breaking Changes von .NET 5.0 zu .NET 6 nicht so lang wie die vergleichbaren Listen in den letzten Jahren.

Support-Zyklen für .NET für die Jahre 2019 bis 2026 (Abb. 3).

.NET 6 steht – getrennt in drei Runtimes und ein Software Development Kit – auch zum kosten- und registrierungsfreien Download bereit. Wer Visual Studio als Entwicklungsumgebung einsetzt, muss die gestern erschienene Version 2022 verwenden.

Vor der RTM-Version waren sieben Preview-Versionen und zwei als Release Candidate titulierte Versionen erschienen, über die heise Developer jeweils im Detail berichtet.

(sih)