Microsofts .NET 7.0 und C# 11.0 sind reif für den produktiven Einsatz
Die frischen Releases von .NET und C# bringen neue Funktionen für die Sprachsyntax, die Basisklassenbibliothek sowie die Web- und Cross-Plattform-Entwicklung.
- Dr. Holger Schwichtenberg
Im Rahmen der .NET Conf 2022 hat Microsoft die endgültigen Versionen von .NET 7.0 und C# 11.0 freigegeben. Die Neuerungen betreffen unter anderem die Webentwicklung und Cross-Plattform-Projekte. Außerdem gibt es neue Funktionen für die Sprachsyntax sowie Erweiterungen für die Basisklassenbibliothek und das Object-Relational-Mapping
Die Entwicklung von .NET 7.0 begann vor zwölf Monaten mit dem Erscheinen der vorherigen Version .NET 6.0 im November 2021. Seitdem hat Microsoft sieben Preview-Versionen und zwei Release-Candidates veröffentlicht, über die heise Developer jeweils berichtete (siehe Kasten "Der Weg zu .NET 7").
.NET 7.0 umfasst neben der Sprachsyntax C# 11.0 und dem neuen Ahead-of-Time-Compiler (siehe Abbildung 1) die aktualisierten Versionen der Bibliotheken ASP.NET Core 7.0 für die Webserverprogrammierung, Blazor 7.0 für Browseranwendungen, Windows Forms 7.0 und Windows Presentation Foundation (WPF) 7.0 für klassische Windows-Anwendungen, .NET MAUI 7.0 für Cross-Plattform-Apps und Entity Framework Core 7.0 für den Datenbankzugriff auf unterschiedliche Datenbankmanagementsysteme.
Während ASP.NET Core 7.0, MAUI 7.0, Windows Forms 7.0 und WPF 7.0 an .NET 7.0 gebunden sind, lässt sich Entity Framework Core 7.0 auch auf .NET 6.0 nutzen. C# 11.0 kann man (mit Einschränkungen) auch auf älteren .NET-Versionen nutzen, allerdings bietet Microsoft dafür keinen technischen Support ("C# 11 is supported only on .NET 7 and newer versions.")
.NET 7.0 bietet auch zwei neu eingeführte Anwendungsszenarien von .NET (siehe Abbildung 2) in Verbindung mit WebAssembly:
- Laden einer .NET-DLL in Webbrowser oder Node.js, die auf Basis der .NET-Runtime in der WebAssembly-VM, aber ohne Blazor-Oberfläche läuft.
- Kompilieren einer .NET-basierten Konsolen-EXE via .NET WASI SDK zu einer WebAssembly-Datei (.wasm) mit WebAssembly System Interface (WASI), die mit einem WASI-Host wie WASMTime direkt auf einem beliebigen Betriebssystem ohne separate .NET-Laufzeitumgebung lauffähig ist.
Da beide Anwendungsarten jedoch noch nicht als produktionsreif gelten, erhalten sie nicht den üblichen Support.
Überblick über die Neuerungen
Neue und verbesserte Funktionen gibt es in fast allen wesentlichen Bibliotheken in .NET – außer WPF. Einen Überblick über die Neuerungen kann man sich unter diesen Links verschaffen:
- Neuerungen in .NET 7.0
- Neuerungen in C# 11
- Neuerungen in ASP.NET Core 7.0
- Neuerungen in Entity Framework Core 7.0
- Neuerungen in .NET MAUI 7.0
- Neuerungen in Windows Forms 7.0
- Neuerungen in WPF 7.0
Am 22. November 2022 richten heise Developer und dpunkt.verlag in Kooperation mit www.IT-Visions.de mit der betterCode() .NET 7 eine Online-Konferenz zum frischen Release von Microsofts Entwicklungsplattform .NET aus.
Die Vorträge beschäftigen sich umfangreich mit den Neuerungen in .NET 7, ASP.NET Core 7.0, Blazor 7.0 und Entity Framework Core 7.0 sowie C# 11.
Während es bei den klassischen Windows-Desktop-Anwendung mit Windows Forms, modernere Möglichkeiten zur Datenbindung mit verbesserter Unterstützung für das Oberflächen-Entwurfsmuster Model View ViewModel (MVVM), die Wiederverwendbarkeit mit anderen GUI-Frameworks und das Unit Testing gibt, hat sich bei WPF außer ein paar Fehlerbehebungen, Leistungsverbesserungen und drei neuen Zugänglichkeits-Features nichts getan.
Drei Runtimes und ein SDK mit optionalen Workloads
.NET 7.0 steht zum kostenfreien Download bereit. Wie bisher gibt es drei Varianten der Laufzeitumgebung: Die Kern-Runtime läuft Windows, Linux und macOS, bietet aber nur Konsolenanwendungen. Die ASP.NET Core Runtime läuft auf den gleichen Betriebssystemen und umfasst zusätzlich das Webserverframework und die Server-Variante von Blazor. Die .NET Desktop Runtime für Desktop-Anwendungen mit Windows Forms und Windows Presentation Foundation (WPF) läuft nur auf Windows.
Das .NET 7.0 Software Development Kit (SDK) umfasst alle drei Laufzeitumgebungen und zusätzlich die kommandozeilenbasierten Entwicklerwerkzeuge (.NET CLI). Für die Entwicklung von Cross-Plattform-Anwendungen mit .NET MAUI muss man wie bisher zusätzliche Workloads im SDK via CLI-Befehl dotnet workload install nachinstallieren. Auch für die WebAssembly-Funktionen gibt es optionale Workloads, beispielsweise für den Ahead-of-Timer-Compiler zu WASM-Bytecode.
Für die Arbeit mit .NET 7.0 ist die Entwicklungsumgebungen Visual Studio 2022 oder Visual Studio 2022 for Mac jeweils mindestens in der Unterversion 17.4 erforderlich. Auch das kostenfreie Visual Studio Code lässt sich zusammen mit dem aktuellem C#-Add-on verwenden.
Support nur 18 Monate
.NET 7.0 ist eine sogenannte "Standard-Term-Support"-Version (STS), für die Microsoft lediglich 18 Monate lang Bugfixes und Sicherheitsupdates liefern wird. Bis Juni 2022 hieß diese Supportdauer noch "Current Release". Dann hatte Microsoft zunächst den Begriff "Short-Term-Support" verwendet. Seit 14. Oktober 2022 heißt die Supportdauer offiziell "Standard-Term-Support".
Wer unter Windows die Microsoft-Updates zusätzlich zu Windows-Update aktiviert hat, erhält die Aktualisierungen automatisch – sofern die Laufzeitumgebung explizit installiert ist. Auf anderen Betriebssystemen und beim Bundling der Runtime mit der .NET-Anwendung (bei Single-File-Apps, AOT-Apps und WASI-Apps) muss man alle .NET-Updates manuell verteilen.
Erst die für November 2023 geplante Version 8.0 von .NET soll wieder einen längeren Support von 36 Monaten bieten.
Breaking Changes
Wie in jeder der modernen .NET-Versionen gibt es beim Wechsel der Hauptversionsnummer einige Inkompatibilitäten auf Quellcode- und Binärebene, die Codeänderungen beim Umstieg erfordern. Eine längere Liste der Breaking Changes in .NET 7.0 und ASP.NET Core 7.0 findet sich in einem Beitrag von Microsoft. Für C# 11.0 und Entity Framework Core 7.0 existieren separate Listen mit Inkompatibilitäten. Letztere führt drei Änderungen mit großer Reichweite auf. Dazu gehört, dass Verbindungen zum Microsoft SQL Server nun im Standard verschlüsselt sein müssen. Das Entity Framework Core-Team verweist dabei auf Änderungen im Basistreiber Microsoft.Data.SqlClient
(siehe Abbildung 3).
Die Online-Veranstaltung .NET Conf 2022 läuft noch bis zum 10. November. Interessierte können alle Vorträge kostenfrei live oder zeitversetzt betrachten.
Die Liste der Links zu den Neuerungen wurde erweitert und der Satz zu den Neuerungen bei WPF angepasst.
(rme)