Patrick Smacchia, NDepend
02.11.2021, 14:29 Uhr
5 Lehren aus der Migration auf .NET 5/6
An der Migration grosser Legacy-Anwendungen nach .NET 6 führt auf Dauer kein Weg vorbei. NDepand-Entwickler Patrick Smacchia hat seinen Code bereits umgestellt und gibt seine Erfahrungen weiter.
Im Januar 2020 schrieb Patrick Smacchia einen Beitrag mit dem Inhalt: Jetzt nicht die Migration von .NET-4.8-Anwendungen auf .NET 5/6 zu planen, ist sicherlich ein Fehler. Inzwischen ist er seinem eigenen Rat gefolgt und hat den grössten Teil seines Nicht-UI-Codes migriert. Auf dieser Migrationsreise haben er und sein Team einige Dinge gelernt, die er jetzt in einem Blogbeitrag mit allen anderen .NET-Entwicklern teilt. Die Essenz seiner umfangreichen Ausführungen hat er in diesen fünf Punkten zusammengefasst:
- .NET Standard ist nicht tot. Anstatt mehrere Redistributables zu haben – eine für jedes Betriebssystem – haben wir eine einzige beibehalten. Ein einziges Redistributables zu haben, macht die Dinge für die Benutzer einfacher und für uns einfacher zu warten. Wir haben nicht direkt auf .NET 5 migriert. Stattdessen werden 99 Prozent des migrierten Codes jetzt gegen .NET Standard 2.0 kompiliert. Nur die Assembly .\net5.0\NDepend.Console.MultiOS.dll wird gegen .NET 5.0 kompiliert. Diese leichtgewichtige ausführbare Assembly enthält lediglich eine Klasse zum Aufrufen der gesamten Analyse-/Berichtsverarbeitung, die in .NET Standard 2.0-Assemblys implementiert ist. Ihre Aufgabe besteht lediglich darin, dotnet.exe das Booten der .NET 5.0-Laufzeit zu ermöglichen.
- Erwarten Sie Schmerzpunkte. Microsoft hat mit .NET Standard und .NET Core hervorragende Arbeit geleistet, indem es die meisten APIs, die häufig in .NET Fx verwendet werden, vorgestellt und unterstützt hat. Erwarten Sie jedoch einige nicht unterstützte APIs, die Workarounds und Refactoring-Kopfschmerzen verursachen werden.
- Werkzeuge wie NDepend können helfen, die meisten Migrationsprobleme zu vermeiden.
- Die Pflege der Code-Wartbarkeit kann zu einer Frage des Überlebens werden. Die beiden wichtigsten Prinzipien sind Mehrschichtige Architektur und ein joher Testabdeckungsgrad.
- Bibliotheken von Drittanbietern, auf die verwiesen wird, müssen modular, leichtgewichtig und quelloffen sein. Erfahrene Entwickler wissen, dass jede referenzierte Bibliothek eine potenzielle Belastung für die Zukunft darstellt. Jeder Verweis ist ein Kompromiss zwischen dem Aufwand für die eigene Arbeit + Wartung und dem Aufwand für die Integration der Bibliothek + Aufwand für die Aktualisierung und das Testen neuer Versionen + Menge der Probleme, die sie in der Zukunft verursachen kann.
Den kompletten englischsprachigen Beitrag von Patrick Smacchia lesen Sie hier.
Autor(in)
Bernhard
Lauer