Die Microsoft Corporation hat eine bedeutende neue Version der offenen .NET-Plattform 6 vorgestellt, die durch die Vereinheitlichung der Produkte .NET Framework, .NET Core und Mono geschaffen wurde. Auf Basis von .NET 6 können plattformübergreifende Anwendungen für Browser, Cloud-Systeme, Desktop, IoT-Geräte und mobile Plattformen entwickelt werden, wobei einheitliche Bibliotheken und ein gemeinsamer Build-Prozess verwendet werden, unabhängig vom Anwendungstyp. Die .NET SDK 6, .NET Runtime 6 und ASP.NET Core Runtime 6 wurden für Linux, macOS und Windows erstellt. .NET Desktop Runtime 6 wird nur für Windows bereitgestellt. Die projektspezifischen Arbeiten werden unter der MIT-Lizenz veröffentlicht.
.NET 6 umfasst die CoreCLR-Runtime mit dem JIT-Compiler RyuJIT, Standardbibliotheken, CoreFX-Bibliotheken, WPF, Windows Forms, WinUI, Entity Framework, die Befehlszeilenoberfläche dotnet sowie Tools zur Entwicklung von Microservices, Bibliotheken, serverseitigen, grafischen und Konsolenanwendungen. Separat wurde der Stack zur Entwicklung von Webanwendungen ASP.NET Core 6.0 und die ORM-Schicht Entity Framework Core 6.0 (Treiber, unter anderem für SQLite und PostgreSQL) veröffentlicht, sowie die Sprachversionen C# 10 und F# 6. Die Unterstützung von .NET 6.0 und C# 10 ist im freien Code-Editor Visual Studio Code enthalten.
Besonderheiten der neuen Version:
- Die Leistung wurde erheblich gesteigert, einschließlich der Optimierung der Datei-Eingabe/Ausgabe.
- In der Sprache C# 10 wurde die Unterstützung von Strukturen in Form von Records (record struct), der Direktive „global using“, von an Dateien gebundenen Namensräumen und neuen Möglichkeiten für Lambda-Ausdrücke implementiert. Der Compiler unterstützt jetzt die inkrementelle Generierung von Quellcode.
- In der Sprache F# 6 wurde Unterstützung für den Mechanismus der asynchronen Ausführung von Aufgaben (async) und die Pipeline-Debugging eingeführt.
- Eine Hot Reload-Funktion ist verfügbar, die Werkzeuge zum Bearbeiten von Code zur Laufzeit während der Programmausführung bereitstellt, sodass Änderungen ohne manuelles Stoppen des Programms und ohne Anbringen von Haltepunkten vorgenommen werden können. Der Entwickler kann die Anwendung unter „dotnet watch“ ausführen, nach dem Eingaben in den Code automatisch auf die laufende Anwendung angewendet werden, sodass die Ergebnisse sofort sichtbar sind.
- Ein Tool namens „dotnet monitor“ wurde hinzugefügt, um Zugriff auf diagnostische Informationen des dotnet-Prozesses zu erhalten.
- Ein neues System zur dynamischen Optimierung auf Basis der Ergebnisse der Code-Profilierung (PGO – Profile-guided optimization) wurde vorgeschlagen, das eine generation von optimierterem Code ermöglicht, basierend auf einer Analyse der Ausführungsmerkmale. Der Einsatz von PGO führte zu einer Leistungssteigerung des TechEmpower JSON «MVC» um 26%.
- In ASP.NET Core wurde die Unterstützung für das HTTP/3-Protokoll in HttpClient und gRPC hinzugefügt.
- Die API, die mit dem JSON-Format verbunden ist, wurde erweitert. Ein neuer Code-Generator System.Text.Json und ein System zur Datenserialisierung im JSON-Format wurden hinzugefügt.
- In Blazor, der Plattform zur Erstellung von Webanwendungen in C#, wurde die Unterstützung für das Rendern von Razor-Komponenten aus JavaScript und die Integration mit bestehenden JavaScript-Anwendungen hinzugefügt.
- Die Unterstützung für die Kompilierung von .NET-Code in WebAssembly-Ansichten wurde hinzugefügt.
- In der API für File IO wurde die Unterstützung für symbolische Links hinzugefügt. FileStream wurde komplett neu geschrieben.
- Die Unterstützung für die OpenSSL 3-Bibliothek und die kryptografischen Algorithmen ChaCha20/Poly1305 wurde hinzugefügt.
- In der Laufzeit wurden Schutzmechanismen implementiert: W^X (Write XOR Execute, Verbot des gleichzeitigen Zugriffs auf Schreiben und Ausführen) und CET (Control-flow Enforcement Technology, Schutz vor Exploits, die auf Return-Oriented Programming-Techniken basieren).
- Experimentelle Unterstützung für iOS und Android wurde als TFM-Plattformen (Target Framework Moniker) hinzugefügt.
- Die Unterstützung für Arm64-Systeme wurde erheblich verbessert. Unterstützung für Apple-Geräte mit dem ARM-M1-Chip (Apple Silicon) wurde hinzugefügt.
- Ein Prozess zur Erstellung des .NET SDK aus Quelltexten wurde bereitgestellt, was die Paketbildung mit .NET für Linux-Distributionen vereinfacht.
Quelle: opennet.ru
