.NET nun auf Linux, OS X und Windows?

5. April 2016

Der Weg, den Microsoft mit dem neuen, modularen, quelloffenen, auf Linux, OS X und Windows lauffähigen .NET Core gerade geht, könnte ein neues Kapitel aufschlagen.

Einleitung
Seit der ersten Veröffentlichung des .NET Frameworks in 2002 besteht dieses in verschiedenen, fragmentierten Ausgaben je nach Anwendungstyp. Aufgrund seiner fehlenden Modularität hat die Einführung einer neuen .NET-Version und deren Portierung auf eine bestimmte Plattform (Mobile, Web, Desktop, usw.) in der Vergangenheit immer ein neues Anwendungsmodell, Framework und eine neue Laufzeitumgebung mit sich gebracht (siehe Abbildung 1). Es bildete deshalb eine monolithische Einheit, welche immer im Betriebssystem zu installieren war. Dies ist nicht unproblematisch: Erstens kann sich die Installation einer neuen .NET-Version immer auf das Verhalten bestehender Anwendungen auswirken, und zweitens ist es Softwareentwicklern nicht immer möglich und erlaubt, ein .NET-Upgrade auf dem Zielsystem bei Bedarf selbst vorzunehmen.


Abbildung 1 – Fragmentiertes .NET Framework auf verschiedenen Plattformen [2]

.NET Core 1.0
Im Mai 2014 kündigte Microsoft die Entwicklung des betriebssystemübergreifenden ASP.NET Core 1.0 an, was allerdings auch die Entwicklung eines neuen .NET Frameworks – .NET Core 1.0 – erforderte. Im Gegensatz zum klassischen, monolithischen .NET Framework ist .NET Core modular aufgebaut.

Dies ermöglicht die selektive Verwendung der .NET-Komponenten, die auch tatsächlich im Anwendungsprojekt benötigt werden. Bei .NET Core gehören die oben beschriebenen Probleme deshalb der Vergangenheit an, denn die benötigten Einzelkomponenten sind anwendungsspezifisch und können einfach über ein NuGet-Paket bezogen werden, was keinerlei Auswirkungen auf andere Anwendungen hat.

Des Weiteren ist .NET Core eine quelloffene, plattform- und betriebssystemübergreifende, d. h. sowohl auf Windows, OS X als auch auf Linux lauffähige Neuimplementierung des .NET Frameworks, welche sich unter der Federführung von Microsoft derzeit noch in Entwicklung befindet.

Dementsprechend enthält .NET Core derzeit nur einen Teil der bisherigen .NET-Funktionalität, da Teile des vollständigen .NET Frameworks noch nicht abschließend portiert sind. Auf eine vollständige Übernahme aller bisher zur Verfügung stehenden Funktionen wird man allerdings vergeblich warten, denn Microsoft hat manche Features für .NET Core bereits abgekündigt. Dazu gehören unter anderem:

  • App Domains
  • Remoting
  • Sandboxing

Wer bereits für das neue Framework entwickeln möchte, kann das mit UWP-Anwendungen tun, denn die laufen bereits auf .NET Core. Gleichermaßen können auch Web API- und MVC-Websites unter ASP.NET Core 1.0 erstellt werden, das ebenso auf .NET Core lauffähig ist.

Spielt man mit dem Gedanken, vorhandene Anwendungen auf das neue Framework zu portieren, so sind derzeit vor allem Konsolenanwendungen sowie auf MVC oder Web API basierende ASP.NET-Anwendungen geeignete Kandidaten, denn letztere werden in einer ähnlichen Form im ASP.NET Core 1.0 bereits jetzt unterstützt. Anders sieht das allerdings bei bestehenden WebForms- oder WPF-Anwendungen aus. Bis jetzt gibt es seitens Microsoft noch keine offizielle Aussage dazu, ob und wann diese nach .NET Core portiert werden.

Wie nenne ich mein Kind?
Wer im Internet nach „.NET Core“ sucht, der wird teilweise noch die vormals von Microsoft selbst verwendeten Benennungen – .NET Core 5, ASP.NET vNext und ASP.NET 5 – finden. Diese wurden letztlich fallengelassen, erweckten sie doch den Anschein, sie seien besser und ersetzten die früheren Versionen. Die neue Namensgebung soll die grundlegende Neuausrichtung bei .NET Core und ASP.NET Core im Namen transportieren.

Fazit
Das neue .NET Core 1.0 ist eine modulare, plattform- und betriebssystemübergreifende Neuimplementierung des .NET Frameworks, die derzeit noch entwickelt wird. Durch seine Modularität haben Entwickler die Möglichkeit, gewünschte Einzelkomponenten per NuGet zu beziehen, anstatt im Betriebssystem ein .NET-Upgrade vornehmen zu müssen.

.NET Core 1.0 bringt Stand heute allerdings nur einen Teil der Funktionalität des vollständigen .NET Frameworks mit, weswegen sein Anwendungsbereich zurzeit auf ASP.NET Core 1.0-, UWP- und Konsolenanwendungen beschränkt ist. Eine offizielle Aussage seitens Microsoft zur Portierung weiterer Technologien wie z.B. WPF, WebForms, usw. gibt es noch nicht, man darf aber gespannt sein.

Referenzen

  1. https://msdn.microsoft.com/de-de/library/dn878908(v=vs.110).aspx
  2. http://thenewstack.io/why-you-should-care-about-the-new-open-source-net-core/
  3. https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/