Der Zeitpunkt ist günstig. Mit .NET Core 3.1 steht uns ein neuer, stabiler Release mit LTS (Long Time Support) zur Verfügung und die Migration von API’s des klassischen zum neuen Framework ist abgeschlossen. Jetzt oder nie, lautet daher die Frage.
Soll ich…?
Doch weshalb sollen wir überhaupt migrieren?
- .NET 4.8 ist angeblich der letzte Release seiner Art und seit .NET 4.5 hat sich nicht mehr wirklich viel getan. Weiterentwicklungen und neue API’s wird es in Zukunft nur noch für .NET Core geben.
- Mit C# 8.0 tauchen erstmals Features der Programmiersprache auf, die nicht mehr mit dem klassischen Framework kompatibel sind. Dieser Trend wird sich verstärken, weil die Compilerbauer bei Microsoft wenig Lust verspüren, ihre Erweiterungen doppelt auszuführen und die neuen Sprachfeatures oft Erweiterungen im Framework voraussetzen.
- Auch C# 9 und Entity Framework Core 5 sind nicht mehr mit dem klassischen Framework kompatibel. Es ist damit zu rechnen, dass in Zukunft mehr und mehr Frameworks und NuGet Pakete nicht mehr kompatibel sein werden, weil man nicht mehr die neusten C# Features verwenden kann.
- .NET Core verspricht bessere Performance in vielen Bereichen, ist modular, aufgeräumt und plattformunabhängig. Allerdings gilt die Plattformunabhängigkeit nicht für WPF, WinForms und alle nur unter Windows vorhandenen Dienste wie z.B. die Registry. Bis auf die UI-Schicht lassen sich jedoch sämtliche Komponenten so programmieren, dass sie auf allen Plattformen laufen, von Windows über Linux, macOS bis hin zu iOS und Android.
Wie gehen wir vor?
Ein erster Kompatibilitätscheck mit dem .NET Portability Analyzer ist schnell gemacht, vor allem wenn man das Windows Compatibility Pack zur Hilfe nimmt liegt die Portabilität häufig bereits nahe bei 100%. Der Teufel steckt aber wie so oft im Detail, die Prozentzahl alleine sagt nicht, wie viel Aufwand es bedeutet, um die Kompatibilität auf 100% zu bringen.
Wer Workflows, WebForms, .NET Remoting, AppDomains, WCF als Server oder sonst eine Komponente verwendet, die nicht auf Core portiert wurde, hat viel Arbeit, manchmal hilft aber auch schon ein Update auf das neueste NuGet Package oder der Ersatz einer einzelnen Funktion.
Auch ein schrittweises Vorgehen ist denkbar. In einem ersten Schritt werden die untersten Layer der Applikation auf .NET Standard 2.0 gebracht. Dies erlaubt es, in Zukunft ein neues API für die Applikation bereits mit .NET Core zu realisieren. Nach und nach kommt man dem Ziel näher und neue Komponenten sind bereits von Anfang an kompatibel.
Fazit
Einen triftigen Grund, eine Applikation auf Core zu portieren, gibt es vorerst nicht, das klassische Framework steht uns noch sehr lange zur Verfügung. Wer allerdings vor hat, seine Applikation auch in Zukunft zu weiterzuentwickeln und vielleicht einmal auf neue Plattformen zu bringen, sollte jetzt beginnen, um den Anschluss nicht zu verpassen. Im Minimum sollte man wissen, wie es um die Applikation steht und einen Plan für die Zukunft haben. Wir beraten Sie gerne.