Grundlegendes zu Microsoft .NET 5

Eines der Hauptthemen der Entwicklerstrategie von Microsoft für 2020 ist vielleicht der Wechsel zwischen den Generationen. Es ist eine relativ reibungslose Übergabe, die als Vereinigung alter und neuer Arbeitsweisen dient. Unabhängig davon, ob es sich um Project Reunion, WinUI 3 oder den Start von .NET 5 handelt, schreitet die neue Technologie voran und lässt die alte zurück.

Das ist keine schlechte Sache. Wir entwickeln aus vielen Gründen neue Wege, um Dinge zu tun, aber sie verschmelzen oft um einen wichtigen Punkt: Der neue Weg ist besser. Es löst Probleme, die alte Tools nicht lösen konnten, und beantwortet neue Fragen, die bei der Definition der ursprünglichen Lösung nicht gestellt wurden.

Ein neues .NET für eine neue Welt

All diese Gründe kommen beim Übergang von .NET Framework zu .NET 5 zusammen. Vor etwa zwanzig Jahren, als das ursprüngliche .NET Framework definiert wurde, haben wir monolithische Client-Server-Anwendungen in genau definierten IT-Umgebungen erstellt. Jetzt bauen wir eine Mischung aus leichtgewichtigen verteilten Microservices und plattformübergreifenden mobilen Apps auf, die sich schnell ändernde Infrastrukturen nutzen. Es ist trotz des Klischees eine ganz neue Welt.

.NET Core wurde für diese Arbeitsweise entwickelt. plattformübergreifend von Anfang an und beabsichtigt, neue, Cloud-erste mobile Anwendungen sowie traditionelle .NET-Entwicklungsmuster und -praktiken zu unterstützen. In drei Hauptversionen wurden immer mehr APIs verwendet, und als die .NET Standard-Bibliotheken ein gemeinsames Ziel für Code anboten, das die gemeinsame Nutzung von Projekten über das .NET Framework und Xamarin hinweg vereinfachte.

.NET 5: Ein Weg für die zukünftige Entwicklung

Technisch sollte diese neue Version .NET Core 4 sein, aber Microsoft überspringt eine Versionsnummer, um Verwechslungen mit der aktuellen Version von .NET Framework zu vermeiden. Wenn Sie zu einer höheren Versionsnummer wechseln und Core aus dem Namen streichen, ist dies der nächste Schritt für die gesamte .NET-Entwicklung. Zwei Projekte behalten weiterhin den Kernnamen: ASP.NET Core 5.0 und Entity Framework Core 5, da noch ältere Projekte mit denselben Versionsnummern vorhanden sind.

Dies ist ein wichtiger Meilenstein, der den Punkt markiert, an dem Sie in Betracht ziehen müssen, alle neuen Projekte in .NET 5 zu starten und vorhandenen Code aus .NET Framework zu verschieben. Microsoft entfernt zwar keine Unterstützung aus .NET Framework, befindet sich jedoch im Wartungsmodus und erhält in zukünftigen Point-Releases keine neuen Funktionen. Alle neuen APIs und die Community-Entwicklung werden in .NET 5 (und der langfristigen Unterstützung von .NET 6 für 2021) enthalten sein.

Einige bekannte Technologien wie Web Forms und Windows Communication Foundation werden in .NET 5 nicht mehr unterstützt. Wenn Sie sie weiterhin verwenden, sollten Sie vorerst in .NET Framework 4 bleiben und eine Migration auf neuere, unterstützte Technologien planen, z als Razor Pages oder gRPC von ASP.NET. Es gibt Pläne für Community-Unterstützung für alternative Frameworks, die ähnliche APIs bieten. Die Arbeit mit neueren Ansätzen wird jedoch zukunftssicherem Code helfen und die plattformübergreifende Arbeit erleichtern.

Ein etwas verwirrender Aspekt von .NET 5 ist die Funktionsweise von .NET Standard-Bibliotheken. Sie verschwinden nicht, obwohl .NET 5-Code sie nicht direkt referenzieren muss, da sie jetzt eine Teilmenge des .NET 5-Zielframework-Monikers (TFM) sind. Dieses neue TFM ersetzt das alte netcoreapp und das TFM. netstandard Wenn Sie jedoch Code schreiben, der für mehrere Frameworks freigegeben werden muss, können Sie das .NET Standard 2.0-TFM aus Kompatibilitätsgründen weiterhin verwenden. In den meisten Fällen arbeiten Sie jedoch wahrscheinlich nur in einer .NET 5-Umgebung, sodass Sie sicher an einer net5.0TFM-Deklaration festhalten können.

Erste Schritte mit .NET 5

.NET 5.0 hostet weiterhin dieselben vertrauten Sprachen, einschließlich neuer Versionen von C # und F #. Diese fügen viele neue Funktionen hinzu und sind Teil von Visual Studio 16.8 oder der aktualisierten C # Visual Studio Code-Erweiterung. Microsoft hat das Framework und alle seine Implementierungen, wie ein Großteil von Mono, in ein einziges GitHub-Repository verschoben, um die Entwicklung zu konsolidieren und sicherzustellen, dass alle Versionen dieselben zugrunde liegenden Funktionen haben. Wenn Microsoft auf .NET 6 umsteigt, werden andere übergeordnete Implementierungen eingeführt, einschließlich Xamarin.

Das neue .NET basiert weiterhin auf den Just-in-Time-Compilertechniken, die für die ursprüngliche Common Language Runtime entwickelt wurden. Die neue CoreCLR verbessert weiterhin die Leistung und arbeitet über mehrere Prozessorarchitekturen hinweg. Mit der Einführung der M1 ARM-basierten Prozessoren von Apple wird in .NET für macOS geschriebener Code als native Binärdatei sowohl auf Intel- als auch auf ARM-basierter Hardware ausgeführt, sodass der Code keine zweite Emulationsebene durchlaufen muss. Durch die Unterstützung von ARM64 können .NET 5-Anwendungen nativ unter Windows auf ARM-Hardware ausgeführt werden, wobei die Funktionen der Microsoft-eigenen SQ1- und SQ2-Prozessoren genutzt werden.

Einige Szenarien, wie Web Assembly und mobile Betriebssysteme, erfordern vorkompilierten Code, und .NET 5 bietet neben dem JIT-Tool einen vorzeitigen Compiler. Der AOT-Compiler ist jetzt für jede Entwicklungsumgebung verfügbar, und das Uno Platform-Team verzeichnet bereits erhebliche Geschwindigkeitssteigerungen für die Unterstützung von Web Assembly in der Größenordnung von 7 bis 15 gegenüber dem vorherigen Interpreter für Web Assembly-Sprachen.

Es ist geplant, den AOT-Compiler als Option für Apps verfügbar zu machen, die einen schnellen Start und einen geringeren Speicherbedarf benötigen, z. B. auf ressourcenbeschränkten Smartwatches und IoT-Hardware. Eine weitere Option sind Bereitstellungen einzelner Dateien. Alles, was für eine Anwendung benötigt wird (einschließlich der Laufzeit), ist in einem einzigen Paket zusammengefasst, wodurch die Bereitstellung von .NET-Anwendungen in Containern oder auf Nicht-Windows-Systemen vereinfacht wird.

Das neue .NET sollte nicht isoliert betrachtet werden. Weitere Entwicklungen rund um Web Assembly mit Blazor und die plattformübergreifende UI-Entwicklung mit MAUI (Multiplattform App UI) sind ebenfalls wichtig. Durch die Verwendung einer Kombination dieser Technologien kann mit .NET 5 nur sehr wenig erreicht werden, von Hardware der Raspberry Pi-Klasse über Android-Telefone bis hin zu von Kubernetes gehosteten Containern, die unter AWS und Azure ausgeführt werden.

Weiter zu .NET 6 im Jahr 2021

Ein wichtiger Punkt ist, dass dies nur ein weiterer Schritt in einem Prozess ist. .NET 5 ist eine Schlüsseltechnologie für die Trennung der Windows-APIs vom Betriebssystem, die Zusammenführung von WinRT- und Win32-APIs bei Project Reunion und die Umstellung auf WinUI 3 und MAUI als UI-Ebenen. Ein Großteil dieser Arbeit wird mit der Veröffentlichung von .NET 6 im Jahr 2021 fortgesetzt - dem Ziel vieler dieser Projekte. Sie müssen nicht warten, bis .NET 6 mit den Migrationen beginnt. Je früher Sie anfangen, desto besser, damit Sie Zeit haben, sich mit eventuell auftretenden Problemen zu befassen.

Sie sollten .NET 5 als ersten Schritt in der nächsten Etappe der .NET-Reise sehen, in der Sie beginnen sollten, den gesamten Legacy-Code zu übernehmen und zu entscheiden, was durch Portierung und Aktualisierung erforderlich ist und was vollständig ersetzt werden muss . Gegen Ende des Jahres 2020 planen Sie wahrscheinlich Ihren Entwicklungsplan für 2021. In diesem Sinne sollte .NET 5 ein Objektiv sein, mit dem Sie sich auf das konzentrieren können, was getan werden muss, um Ihren Software-Stand für eine viel schnellere Zukunft bereit zu halten, die nicht mehr an Windows-Versionen oder überhaupt an Windows gebunden ist.