Powershell und .NET – zwei Säulen in der Microsoft-Welt, die so vieles stützen. Insbesondere das .NET-Framework, das in seiner ersten Version vor 16 Jahren erschien, ist heute aus allem, was Windows betrifft, nicht mehr wegzudenken.
Doch schaut man sich die jüngsten Schritte des wertvollsten IT-Unternehmens – vor kurzem haben sie Apple wieder überholt – genauer an, sieht es so aus, als wäre genau das Microsofts Plan.
Index
.NET-Framework & .NET-Core
Als Beispiel dient dabei Powershell 6. Die jüngste Version der mächtigen Konsole für Windows-Betriebssysteme basiert nämlich nicht mehr – wie alle Versionen zuvor – auf dem .NET Framework sondern eben auf dem neuen Framework namens .NET Core.
Das .NET im Namen ist dabei trügerisch, vermittelt es doch den Eindruck, dass die beiden Frameworks kompatibel untereinander sind. Das ist allerdings nur zu einem geringen Teil der Fall. .NET Core ist tatsächlich komplett separat vom altbekannten .NET Framework, was auch durch die Powershell in der Version 6 deutlich wird. Dieses kann nämlich nicht als Update für die alten Versionen installiert werden, sondern nur parallel neben dieser laufen.
Warum .NET-Core?
Der Grund dafür ist eigentlich recht offensichtlich: Das .NET-Framework kommt doch langsam in die Jahre. Und statt weitere, mehrere Jahre auf die Legacy zu setzen, entschied sich Microsoft nun dafür, die Entwicklung von vorne zu beginnen. Das hat wohl mehrere Gründe, unter anderem:
- Cross-Platform
- Effizienz & Schnelligkeit
- Modularität
- Crowd-Sourcing und Open Source
Das .NET-Framework war von jeher exklusiv für das Windows-OS verfügbar. Auf .NET geschriebene Anwendungen liefen generell nur unter Windows, erst Emulatoren wie Wine brachten diese auch auf Linux zum Laufen – doch meistens mit Abstrichen, wenn die Software überhaupt funktionierte. .NET Core ermöglicht es, nativ auf Linux-Distributionen und auch Docker zu deployen, ohne, dass Dritt-Software oder andere Umwege nötig sind. Diese Öffnung vor allem gegenüber Linux macht sich bei Microsoft schon länger bemerkbar: Seit geraumer Zeit ist es auch möglich, unter Windows 10 eine Linuxdistribution zu installieren und darauf nativ eine Bash zu betreiben. Lesen Sie dazu den Artikel Native Linux-Bash unter Windows.
Mit der kommenden Version 3.0 des .NET Core sollen jetzt auch die typischen Desktopumgebungen Windows Forms und WPF unterstützt werden. Besonders hier wird das schnellere Framework von Vorteil sein – schon seit Jahren leiden die Desktopanwendungen auf dem .NET-Framework unter langen Ladezeiten.
Mit dem Zeitgeist der Softwarearchitektur gehend setzt Microsoft auf einen modularen Aufbau des Frameworks, im Gegensatz zum Vorgänger, der noch relativ strikt monolithisch aufgebaut ist. Das macht es natürlich einfacher, einzelne Bibliotheken in der eigenen Anwendung zu verwenden und gegen die entsprechenden Schnittstellen zu programmieren oder gar eigene Erweiterungen ins Framework zu schreiben. Durch diesen Ansatz ist es auch einfacher, den .NET Core über GitHub durch die Community nach dem Open Source Prinzip weiterentwickeln zu lassen. Durch die Modularität ist es bedeutend einfacher, an mehreren Stellen gleichzeitig weiterzuentwickeln.
Wie geht es weiter?
Die Frage ist nun, was die Zukunft bringen wird. Wie geht es weiter mit dem .NET Framework und dem .NET Core? Muss man nun zeitnah all seine .NET-Framework-Anwendungen auf das neue umziehen? Sicher nicht – mal abgesehen davon, dass das wohl so einfach nicht möglich ist.
Sowohl Core als auch Framework basieren in den aktuellen Versionen auf dem sogenannten .NET Standard 2.0. Alle Klassen und Bibliotheken, die darin enthalten sind, können in beiden Frameworks verwendet werden. Aber die wenigstens Anwendungen heutzutage nutzen ausschließlich nur diese. Wer portieren will, sollte sich das Microsoft.Windows.Compatibility Nuget-Paket anschauen. Dieses Mega-Paket besteht aus mehreren Bibliotheken, die im Framework bereits vorhanden sind und den .NET Core erweitern sollen.
Noch erscheint das alles als mehr Arbeit als Nutzen, denn Legacy-Anwendungen auf ein neues Framework zu portieren bringt oftmals zahlreiche Probleme mit sich. Sicherlich ist es momentan nur in bestimmten Fällen interessant, z.B. wenn man seine bisher reine Windows-Anwendung jetzt auch nativ auf Linux und Docker zur Verfügung stellen möchte.
Jedoch könnten sich – gezwungenermaßen – die Gründe vervielfältigen. Microsoft pusht stark in die Richtung .NET Core. Das erste Beispiel wurde hier bereits genannt – Powershell 6 ist nur noch auf Basis von .NET Core verfügbar. Weiteres wird folgen. So zum Beispiel kündigte Microsoft bereits an, dass ASP.NET Core 3.0 nur noch auf .NET Core laufen wird. Alle neuen Features werden dementsprechend auch nur auf dem neuen Framework verfügbar sein. Betroffen sind aber auch alle Entwickler der Microsoft-eigenen Programmiersprachen C# und Visual Basic. Während VB erst mit .NET Core 3.0 die Unterstützung unterhalten wird, ist das bei C# bereits der Fall. Viele Features der neuen Version, C# 8.0, sollen allerdings nicht mehr im .NET Framework verfügbar sein, sondern nur noch im .NET Core bzw. im .NET Standard 2.1.
Fazit
Das klingt alles ziemlich verwirrend, wenn man nicht in der Thematik steckt. Was kann man nun, was kann man nicht mehr? Endgültige Antworten unterscheiden sich von Fall zu Fall und sind nur schwierig zu geben. Die gute Nachricht allerdings: Es ist noch nicht zu spät. Microsoft wird nicht von heute auf morgen das .NET Framework vergessen, dafür ist es viel zu weit verbreitet. Die Strategie geht allerdings deutlich in Richtung .NET Core. Und auch, wenn es heute noch nicht notwendig erscheint, die eigenen Anwendungen zu portieren, so sollte doch jeder .NET-Entwickler ein Auge auf die weitere Entwicklung haben und überlegen, ob das nächste Projekt vielleicht auf .NET Core aufsetzen sollte.
Leave a Reply
<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>