Microsoft hat eine bedeutende Veröffentlichung der offenen Plattform .NET 7 vorgestellt, die durch die Vereinheitlichung der Produkte .NET Framework, .NET Core und Mono geschaffen wurde. Auf der Basis von .NET 7 können plattformübergreifende Anwendungen für Browser, Cloud-Systeme, Desktop, IoT-Geräte und mobile Plattformen entwickelt werden, wobei ein einheitliches Bibliothekssystem und ein gemeinsamer Build-Prozess verwendet werden, der nicht vom Anwendungstyp abhängig ist. Die .NET SDK 7, .NET Runtime 7 und ASP.NET Core Runtime 7 wurden für Linux, macOS und Windows entwickelt. .NET Desktop Runtime 6 wird nur für Windows bereitgestellt. Die mit dem Projekt verbundenen Entwicklungen werden unter der MIT-Lizenz verbreitet. Die Wartung des .NET 7 Branches erfolgt über 18 Monate bis zum 14. Mai 2024.
.NET 7 umfasst die CoreCLR-Laufzeit mit dem JIT-Compiler RyuJIT, Standardbibliotheken, CoreFX-Bibliotheken, WPF, Windows Forms, WinUI, Entity Framework, das Kommandozeilen-Interface dotnet sowie Werkzeuge zur Entwicklung von Mikrodiensten, Bibliotheken, Server-, Grafik- und Konsolenanwendungen. Separat veröffentlicht wurden der Stack für die Entwicklung von Webanwendungen ASP.NET Core 7.0, die ORM-Schicht Entity Framework Core 7.0 (Treiber sind unter anderem für SQLite und PostgreSQL verfügbar), die WPF-Bibliothek 7 (Windows Presentation Foundation), das Windows Forms 7 Framework zur Entwicklung von GUIs, die Orleans 7-Plattform zur Erstellung von Cloud-Native-Anwendungen, das MAUI 7 Framework zur Entwicklung plattformübergreifender Benutzeroberflächen sowie die Versionen C# 11 und F# 7. Die Unterstützung für .NET 7.0 und C# 11 ist im freien Code-Editor Visual Studio Code enthalten.
Besonderheiten der neuen Version:
- Die grundlegende Klassenbibliothek (BCL, Base Class Library) wurde vereinheitlicht, um in verschiedenen Anwendungstypen verwendet zu werden, einschließlich Desktop-Anwendungen, Webanwendungen, Cloud-Plattformen, mobilen Anwendungen, Spielen, eingebetteten Programmen und Systemen für maschinelles Lernen. Für die Entwicklung verschiedener Anwendungstypen kann ein gemeinsamer SDK, eine Laufzeit und ein Satz von Bibliotheken verwendet werden.
- Es wurde die Möglichkeit geschaffen, die Anwendung über die spezifische API, die der Version .NET 7 entspricht, mithilfe der Zielplattform "net7.0" zu binden, zum Beispiel "net7.0". Um an plattformspezifische APIs zu binden, kann bei der Zieldefinition der Typ der Plattform spezifiziert werden, indem beispielsweise "net7.0-android" angegeben wird.
- Die Unterstützung der ARM64-Architektur wurde erheblich verbessert, und die Arbeiten zur Erreichung der Leistungsparität von .NET-Anwendungen auf x86- und ARM64-Architekturen wurden fortgesetzt. Im Runtime wurde die Effizienz der Nutzung des dritten Cache-Niveaus auf ARM64-Systemen erhöht. LSE-Anweisungen wurden genutzt, um den Speicherzugriff von parallelen Threads zu isolieren, was zu einer Reduzierung der Latenz um 45 % führte. In die Bibliothek wurden Handler integriert, die vektorische Typen wie Vector64, Vector128 und Vector256 verwenden, und die Funktionen EncodeToUtf8 und DecodeFromUtf8 wurden auf Basis vektorischer Anweisungen neu geschrieben, was ihre Leistung um bis zu 60 % erhöhte (bei den Funktionen NarrowUtf16ToAscii und GetIndexOfFirstNonAsciiChar erreichte der Performancezuwachs 35 %). Insgesamt stieg die Geschwindigkeit der Durchführung von Tests auf der ARM64-Plattform um 10-60 %.

- Die Unterstützung für die Linux-Plattform wurde verbessert, einschließlich der Aufnahme von Paketen mit .NET 6 in die offiziellen Repositories von Ubuntu 22.04, sowie der Bereitstellung eines optimierten, kompakten und einsatzbereiten Docker-Images für eine schnelle Bereitstellung von Containern mit .NET-basierten Anwendungen.
- Die Unterstützung für die 64-Bit-Architektur IBM Power (ppc64le) wurde hinzugefügt.
- Das .NET Upgrade Assistant-Tool wurde eingeführt, um die Migration älterer Anwendungen auf die .NET 6- oder .NET 7-Zweige zu erleichtern. In der neuen Version wurde die Unterstützung für die Migration von ASP.NET-Anwendungen auf ASP.NET Core erweitert, Analyse- und Korrektur-Tools für WinForms, WPF und Klassenbibliotheken hinzugefügt, die Unterstützung für die Analyse von ausführbaren Dateien implementiert und die Unterstützung für die UWP (Universal Windows Platform) hinzugefügt.
- Die Möglichkeiten zur Erstellung cloud-native Anwendungen und PaaS-Plattformen (Platform as a Service) wurden erweitert. Es wurde die Möglichkeit geschaffen, Anwendungen in isolierten Containern mit dem Befehl „dotnet publish“ zu packen.
- Die Werkzeuge zur Überwachung des Anwendungsstatus und zur Sammlung von Leistungsmetriken wurden erweitert. Neue Ereignisse und Methoden zum Analysieren der Aktivität und Leistung der Anwendung wurden hinzugefügt.
- In C# 11 wurde die Unterstützung für unverarbeitete Zeichenfolgenliterale eingeführt, die spezielle Zeichen ohne die Notwendigkeit der Escape-Sequenzierung enthalten können (solche Literale werden mit drei Anführungszeichen hervorgehoben). Es wurden generische Schnittstellen für mathematische Funktionen vorgeschlagen und die Möglichkeit zur Definition von statischen Elementen in virtuellen Schnittstellen bereitgestellt, was die Anwendung von generischen Programmiermethoden zur Durchführung mathematischer Operationen ohne genaue Typinformation ermöglicht.
- Die Funktionen der Standardbibliothek wurden erweitert. Die API System.Formats.Tar wurde hinzugefügt, um mit Archiven im Tar-Format zu arbeiten. In der Zeitmanagement-Funktion (TimeStamp, DateTime usw.) wurde die Unterstützung für Mikrosekunden und Nanosekunden hinzugefügt. In System.Text.Json wurde die Möglichkeit umgesetzt, die Serialisierung und Deserialisierung von .NET-Typen zu steuern.
- Im Kommandozeilen-Interface „dotnet new“ wurde die Unterstützung für die automatische Vervollständigung von Vorlagen typischer Projekte durch Drücken der Tabulator-Taste hinzugefügt.
- Im .NET SDK wurde die Möglichkeit implementiert, die Verwendung gelieferter Projektvorlagen zu beschränken, zum Beispiel kann festgelegt werden, in welchen Betriebssystemen die Vorlage zulässig ist.
- In NuGet wurde der Modus der zentralisierten Paketverwaltung hinzugefügt, der es ermöglicht, Abhängigkeiten für mehrere Projekte gleichzeitig zu verwalten.
- Die Leistung des JIT-Compilers wurde verbessert. Es wurde die Unterstützung für den OSR-Mechanismus (On Stack Replacement) hinzugefügt, der es ermöglicht, den Code bereits ausgeführter Methoden zu ändern, wodurch Optimierungen in zeitintensive Methoden eingeführt werden können, ohne auf den Abschluss des aktuellen Aufrufs zu warten (im TechEmpower-Test wird eine Leistungssteigerung bei der Verarbeitung der ersten Anfragen um 10-30 % festgestellt).
- Die Effizienz der Optimierung basierend auf den Profilierungsergebnissen des Codes (PGO – Profile-guided optimization) wurde erhöht, was es ermöglicht, während der Ausführung des Programms festgelegte Eigenschaften zu berücksichtigen.
- Die Unterstützung für die Kompilierung in unabhängig ausführbare Dateien (Native AOT) wurde hinzugefügt, in denen das gesamte Projekt ursprünglich in den Maschinencode der Zielplattform ohne Verwendung von Zwischen-Code und ohne Anwendung von JIT kompiliert wurde.
Quelle: opennet.ru

