Menü
Developer

.NET Standard 2.0 ist fertig und .NET Core 2.0 auf der Zielgeraden

Microsoft hat die Arbeiten an Version 2.0 der Standardisierung der .NET-Programmierschnittstelle abgeschlossen. Die Freigabe von .NET Core 2.0 ist im Rahmen der .NET Conf im September geplant. Und auch für den Nachfolger gibt es bereits Pläne.

Von
vorlesen Drucken Kommentare lesen 121 Beiträge
.NET Standard 2.0 ist fertig und .NET Core 2.0 auf der Zielgeraden

Microsoft hat den sogenannten .NET Standard 2.0 finalisiert. Das hat Immo Landwerth, Programmmanager im .NET-Entwicklungsteam bei Microsoft USA, nun erklärt. Der Standard ist eine technische Vorgabe für Programmierschnittstellen (APIs), die es ermöglicht, dass sich Programmcode zwischen verschiedenen Implementierungen von .NET austauschen lässt. Entwickler, die eine Klassenbibliothek auf Basis einer Version des .NET Standard realisieren, können sicher sein, dass diese Bibliothek auf allen .NET-Implementierungen funktioniert, die diese Version des Standards umsetzen.

.NET Standard 2.0 umfasst Landwerth zufolge rund 32.000 Programmierschnittstellen, was gegenüber den rund 13.000 APIs in .NET Standard 1.6 mehr als eine Verdoppelung darstellt. Derzeit realisieren nur 11 Prozent der auf Nuget.org verfügbaren .NET-Softwarekomponenten den .NET Standard in einer der älteren 1.x-Versionen. Mit dem Erscheinen von .NET Standard 2.0 wird sich diese Zahl wesentlich vergrößern, da aufgrund der vielen zusätzlichen Klassen nun mehr Komponenten den Standard bereits automatisch realisieren und anderen Komponenten leichter zum .NET Standard portiert werden können.

Softwarekomponenten auf Nuget.org nach Implementierungsplattform (Abb. 1).

(Bild:  Immo Landwerth )

Für die .NET-Framework-Komponenten, die automatisch zum .NET Standard 2.0 kompatibel sind, bietet Microsoft einen Kompatibilitätsmodus: Entwickler können in einem Projekt, das eine .NET-Standard-2.0-Bibliothek oder eine kompatible Anwendungsart umsetzt, eine Komponente aus dem klassischen .NET Framework referenzieren und nutzen, ohne dass diese für .NET Standard 2.0 neu zu kompilieren ist, sofern sie keine über .NET Standard 2.0 hinausgehende Klassen und -mitglieder verwendet. Laut Landwerth sind rund 70[ }Prozent der NuGet.org-Pakete automatisch kompatibel zum .NET Standard 2.0.

Die Liste der von .NET Standard 2.0 realisierten Klassen und Klassenmitglieder lässt sich auf GitHub einsehen. Zur neuen Standardversion gehören nun beispielsweise die vollständigen Basisdatentypen (Namensraum System), Objektmengen (System.Collections), Datenbankzugriffe (System.Data), Grafikbearbeitung (System.Drawing), Mehrsprachigkeit (System.Globalization), Dateisystemzugriffe (System.IO), Language Integrated Query (System.Linq), Netzwerkprotokolle wie TCP, HTTP und SMTP (System.Net), Verschlüsselung und Hashing (System.Security), Textformate und reguläre Ausdrücke (System.Text), Multi-Threading inklusive dessen Abstraktion in Tasks (System.Threading) und XML (System.Xml). In bisherigen Versionen des .NET Standard fehlten viele dieser Klassen, sogar einige Klassenmitglieder der Basisdatentypen.

Microsofts ursprünglicher Plan war es, in Zukunft zahlreiche Klassen und Klassenmitglieder wegzulassen, um die Klassenbibliotheken zu verschlanken und alte Techniken zu beerdigen. Dieses in .NET Core 1.x umgesetzte Konzept erschwerte aber die Migration von .NET Framework 4.x zu .NET Core 1.x, weshalb Microsoft per Ankündigung vom 27. Mai 2016 seinen Plan revidierte und von nun an unter dem Slogan "One Library to Rule Them All" die Vereinheitlichung der Klassenbibliothek über alle Implementierungen hinweg ausrief.

Im .NET Standard fehlen allerdings auch in Version 2.0 Komponenten für grafische Benutzeroberflächen wie Windows Presentation Foundation (WPF), Windows Forms oder ASP.NET-basierte Oberflächen (Webforms, MVC etc). Aber auch nicht-visuelle Bibliotheken wie die Windows Workflow Foundation (WF) und Windows Management Instrumentation (WMI)/Common Information Model (CIM) sind nicht im .NET Standard enthalten.

Gültige Implementierungen des .NET Standard 2.0 müssen alle im .NET-Standard-Vertrag definierten Klassen und Klassenmitglieder umfassen. Da sich der .NET Standard an den Funktionen von .NET Framework 4.6.1 orientiert, ist der .NET Standard 2.0 in dem bereits am 30. November 2015 erschienenen, klassischen .NET Framework automatisch umgesetzt. Weitere fertige Implementierungen sind Xamarin.iOS ab Version 10.14, Xamarin.Android ab Version 7.5 und Xamarin.Mac ab Version 3.8. Noch in der Entwicklung sind Mono 5.4 und .NET Core 2.0. Auch Microsoft Universal Windows Platform (UWP) für Windows-10-Apps soll .NET Standard realisieren. Dies wird im nächsten großen Windows-Update (Windows 10 Herbst 2017 Creators Update) erfolgen.

Entwickler, die zum .NET Standard 2.0 kompatible Bibliotheken erstellen wollen, benötigen Visual Studio 2017 Update 3 (alias Version 15.3) in Verbindung mit der aktuellen Vorschauversion des .NET Core 2.0 SDK. Alternativ kann man auch Visual Studio for Mac von Microsoft oder die neue JetBrains-IDE Rider einsetzen, die Anfang August 2017 in einer ersten RTM-Version (Release To Manufacturing) erschienen ist.

Die offizielle Roadmap von .NET Core bleibt mit der Angabe "3. Quartal 2017" sehr vage für das Erscheinen von .NET Core 2.0. Auf Microsofts "TechWiese" ist jedoch seit gestern zu lesen, dass .NET Core 2.0 im Rahmen der virtuellen .NET Conf erscheinen wird, die vom 18. bis 20. September 2017 stattfindet.

Microsoft hat derweil auf Github schon die Arbeiten an .NET Core 2.1 begonnen. Die interessanteste offene Aufgabe ist dort "Port System.Xaml to .NET Core". Das Unternehmen will also die XAML-Bibliothek, die Grundlage nicht nur für WPF sondern auch für WF ist, nach .NET Core portieren. Freilich ist damit zunächst nur die Serialisierung und Deserialisierung zwischen einem Dokument in der eXtensible Application Markup Language (XAML) und dem korrespondierenden Objektmodell im RAM gemeint. System.Xaml umfasst keine grafische Repräsentation oder Ausführung dieses Objektmodells. Die Portierung ist aber der notwendige erste Implementierungsschritt, um XAML-Benutzeroberflächen auch auf .NET Core zu ermöglichen.

Microsoft hatte im Rahmen seiner BUILD-Konferenz am 11. Mai 2017 angekündigt, XAML über alle .NET-Implementierungen hinweg vereinheitlichen zu wollen (siehe Abb. 2) und damit eine echte Alternative zur Cross-Platform-Entwicklung mit HTML und JavaScript/TypeScript zu schaffen. Das "XAML Standard" genannte GitHub-Projekt verzeichnet aber seitdem kaum Fortschritte: der letzte Commit ist vom 31. Mai 2017 (siehe dazu auch "Kann Microsoft mit XAML Standard die Abwanderung von Entwicklern stoppen?"). Auch zu .NET Core 2.1 gibt es in der Roadmap nur den vagen Eintrag "4. Quartal 2017".

.NET Standard und XAML-Standard, wobei sich letzterer erst mal nicht auf Linux und macOS erstreckt (Abb. 2).

(Bild: Microsoft)

(Holger Schwichtenberg) / (jul)