iX 2/2019
S. 70
Review
Windows
Aufmacherbild

Aktualisiert: Microsofts .NET-Core-Produktfamilie

Kernbewegung

Microsofts plattformneutrales .NET Core bringt in Version 2.1 und der brandneuen Ausgabe 2.2 etliche neue Funktionen und mehr Geschwindigkeit.

Zum Jahresende 2018 erschien die Version 2.2 der .NET-Core-Produktfamilie, zu der nicht nur Compiler, Laufzeitumgebung und Klassenbibliotheken gehören, sondern auch der objektrelationale Mapper Entity Framework Core sowie ASP.NET Core für serverseitige Webanwendungen und Web-APIs. Die beiden Letzteren führen ein eigenständiges Leben, da sie weiterhin auch mit dem alten .NET Framework laufen.

Microsoft hat jedoch angekündigt, dass zumindest bei ASP.NET Core damit im Jahr 2019 endgültig Schluss sein wird: Version 3.0 soll es nur noch für .NET Core geben. Diese Ankündigung gab es schon für ASP.NET Core 2.0 im Jahr 2017. Damals machte man jedoch schnell einen Rückzieher, der nun nicht wahrscheinlich ist, da sich die .NET-Core-Plattform inzwischen gemausert hat.

Das größte Manko von .NET Core in der Vergangenheit: Viele Klassen und Klassenmitglieder aus dem Vorgänger .NET Framework fehlten. Einen ersten Angleichungsschub gab es in .NET Core 2.0 mit dem Konzept .NET Standard, der Klassen und Klassenmitglieder festlegt, die es in den neuesten Versionen von .NET Framework, .NET Core, Mono und Xamarin gibt. Damit hat sich die Wiederverwendbarkeitsquote von Programmcode stark erhöht. Eine neue Version des .NET Standard gibt es weder in .NET Core 2.1 noch in 2.2. Der erweiterte .NET Standard 2.1 soll erst 2019 mit .NET Core 3.0 kommen, dann aber, das hat Microsoft klar angekündigt, wird das alte .NET Framework ausscheren. Auch die kommende Version .NET 4.8 soll sich nicht mehr nach dem .NET Standard richten, was unterstreicht, dass das .NET Framework aufs Abstellgleis geschoben wird (siehe ix.de/ix1902070).

In .NET Core 2.1 folgte abseits des Standards ein weiterer großer Klassenschub durch das „Windows Compatibility Pack for .NET Core“, das viele Klassen aus dem alten Framework 4.x in die .NET-Core-Welt portiert. Dazu gehören zum Beispiel Klassen für den Registry-Zugriff, Datenbankzugriffe per ODBC, LINQ für DataSets, das Code Document Object Model (CodeDOM), Zugriff auf serielle Ports und LDAP-Server wie das Active Directory sowie die umfangreichen Windows-Management-Instrumentationen (WMI), mit denen man Informationen aus dem Betriebssystem auslesen und verändern kann.

Alles für die Kompatibilität

Das Windows Compatibility Pack for .NET Core ist ein Metapaket auf nuget.org, das die vorgenannten Funktionen in zahlreichen Paketen umfasst, deren Namen den Namensräumen aus der alten .NET-Klassenbibliothek entsprechen. Der Name suggeriert, dass die Funktionen nur auf Windows verfügbar sind. Dies ist nicht ganz korrekt: Die Klassen im Namensraum System.Runtime.Caching beispielsweise laufen ohne Weiteres auch auf Linux. Und die Klassen in System.Drawing und System.Data.Odbc lassen sich mit der Installation von Linux-Zusatzpaketen nutzen. Andere Klassen wie Microsoft.Win32.Registry und System.DirectoryServices.AccountManagement laufen tatsächlich ausschließlich auf Windows, da sie nur dort Sinn ergeben.