Development

.NET Modernisierung — Legacy-Systeme fit machen

Markus Furtlehner · · 5 Min. Lesezeit

Das .NET-Framework-Problem

In vielen österreichischen Unternehmen laufen geschäftskritische Anwendungen auf dem klassischen .NET Framework — Version 4.5, 4.6 oder 4.8. Diese Systeme wurden vor 8, 10 oder sogar 15 Jahren entwickelt, sie funktionieren, und genau das ist das Problem: Sie funktionieren gerade noch so.

Microsoft hat das klassische .NET Framework in den Wartungsmodus versetzt. Es gibt zwar noch Sicherheitsupdates, aber keine neuen Features. Die Zukunft liegt bei .NET 8 und .NET 9 (dem Nachfolger von .NET Core), das plattformübergreifend, performanter und für die Cloud optimiert ist.

Die Frage ist nicht ob, sondern wann und wie eine Modernisierung stattfinden sollte. In diesem Artikel zeigen wir die Optionen auf — ehrlich, mit ihren jeweiligen Vor- und Nachteilen.

Warum Modernisieren? Die Business-Perspektive

Technische Schuld ist ein abstraktes Konzept. Für die Geschäftsführung zählen konkretere Argumente:

Sicherheit: Veraltete Frameworks und Bibliotheken sind ein Einfallstor für Angriffe. Jede bekannte Schwachstelle, für die es keinen Patch gibt, ist ein offenes Tor.

Fachkräfte: Junge Entwickler wollen mit modernen Technologien arbeiten. Ein Stelleninserat, das .NET Framework 4.5 und Web Forms erwähnt, wird kaum Bewerbungen generieren.

Performance: .NET 8 ist in vielen Benchmarks drei- bis fünfmal schneller als .NET Framework 4.8. Das bedeutet weniger Server, geringere Cloud-Kosten und bessere Nutzererfahrung.

Cloud-Readiness: .NET Framework läuft nur auf Windows. Wer in die Cloud migrieren will — insbesondere auf Linux-basierte Container — braucht .NET 8 oder höher.

Kosten: Die Wartung von Legacy-Systemen wird mit jedem Jahr teurer. Neue Features dauern länger, weil die alte Architektur sie nicht einfach zulässt.

Legacy-Systeme und Mainframe-Infrastruktur in Unternehmen

Die vier Modernisierungsstrategien

Strategie 1: Rewrite (Neuschreiben)

Die radikalste Option. Die Anwendung wird von Grund auf neu entwickelt, basierend auf den bestehenden Anforderungen und der gewachsenen Geschäftslogik.

Vorteile:

  • Saubere Architektur ohne Altlasten
  • Modernste Technologien und Patterns
  • Optimiert für Cloud-Betrieb

Nachteile:

  • Höchstes Risiko: Viele Neuschreib-Projekte scheitern oder überziehen das Budget massiv
  • Lange Dauer: 12 bis 24 Monate für eine mittelgroße Anwendung
  • Wissensverlust: Die implizite Geschäftslogik des alten Systems geht leicht verloren

Empfehlung: Nur bei kleinen Anwendungen oder wenn die bestehende Codebasis so schlecht ist, dass eine schrittweise Migration unmöglich wäre.

Strategie 2: Strangler-Fig-Pattern

Die pragmatischste und aus unserer Sicht beste Strategie für die meisten Fälle. Benannt nach der Würgefeige, die einen bestehenden Baum langsam umwächst und schließlich ersetzt.

Das Prinzip: Neue Features werden ausschließlich in .NET 8 entwickelt. Bestehende Funktionalität wird schrittweise extrahiert und in moderne Services überführt. Das alte System läuft parallel weiter und wird nach und nach kleiner.

Vorteile:

  • Geringes Risiko durch inkrementelle Migration
  • Das bestehende System bleibt funktionsfähig
  • Jeder Schritt liefert sofort Mehrwert
  • Das Team lernt die neuen Technologien schrittweise

Nachteile:

  • Temporär höhere Komplexität durch Parallelbetrieb zweier Systeme
  • Erfordert klare Schnittstellen zwischen altem und neuem System
  • Längerer Gesamtzeitraum als ein Rewrite (dafür weniger Risiko)

Konkretes Vorgehen:

  1. API-Gateway einführen: Ein Gateway (z.B. YARP oder Azure API Management) routet Anfragen entweder zum alten oder zum neuen System.
  2. Neue Features in .NET 8 entwickeln: Jede neue Anforderung wird im neuen Stack implementiert.
  3. Module extrahieren: Beginnend mit den am wenigsten komplexen Modulen, wird Funktionalität in den neuen Stack überführt.
  4. Daten migrieren: Schrittweise Migration der Datenbank, oft mit einem temporären Synchronisationsmechanismus.
  5. Altes System abschalten: Wenn alle Module migriert sind, wird das alte System abgeschaltet.

Strategie 3: In-Place-Upgrade

Für Anwendungen, die auf ASP.NET MVC oder Web API basieren, gibt es Upgrade-Pfade direkt von .NET Framework zu .NET 8. Microsoft stellt dafür den .NET Upgrade Assistant bereit.

Vorteile:

  • Behält die bestehende Codebasis weitgehend bei
  • Schneller als ein Rewrite
  • Tooling-Unterstützung durch Microsoft

Nachteile:

  • Funktioniert nicht für Web Forms, WCF-Server oder Remoting
  • Die alte Architektur wird mitgenommen — technische Schuld bleibt bestehen
  • Nicht alle NuGet-Pakete sind mit .NET 8 kompatibel

Empfehlung: Gut geeignet für Anwendungen, die bereits auf MVC/Web API basieren und deren Architektur grundsätzlich solide ist.

Strategie 4: Containerisierung

Das bestehende .NET-Framework-System wird als Windows-Container verpackt und in eine Containerumgebung (Docker, Kubernetes) überführt. Das ist keine echte Modernisierung, aber es löst einige der dringendsten Probleme.

Vorteile:

  • Schnelle Umsetzung (Tage bis wenige Wochen)
  • Verbesserte Deployments und Skalierbarkeit
  • Entkopplung von der physischen Infrastruktur

Nachteile:

  • .NET Framework erfordert Windows-Container, die deutlich größer und ressourcenhungriger sind als Linux-Container
  • Die technische Schuld bleibt bestehen
  • Nur ein Zwischenschritt, keine langfristige Lösung

Best Practices für die Modernisierung

Automatisierte Tests als Sicherheitsnetz

Bevor Sie eine einzige Zeile Code migrieren, brauchen Sie Tests. Im Idealfall hat das bestehende System bereits eine Testabdeckung. In der Realität ist das selten der Fall.

Unser Ansatz:

  1. Characterization Tests schreiben: Tests, die das aktuelle Verhalten des Systems dokumentieren, ohne es zu bewerten.
  2. API-Tests: Alle bestehenden Endpoints mit erwarteten Ein- und Ausgaben testen.
  3. Integrationstests: Kritische Geschäftsprozesse End-to-End testen.

Diese Tests sind Ihr Sicherheitsnetz. Wenn nach einer Migration alle Tests grün sind, können Sie davon ausgehen, dass sich das Verhalten nicht verändert hat.

Dependency-Analyse

Vor der Migration müssen Sie wissen, welche Abhängigkeiten Ihre Anwendung hat:

  • NuGet-Pakete: Gibt es .NET-8-kompatible Versionen? Alternativen?
  • System-Bibliotheken: Welche .NET-Framework-spezifischen APIs werden genutzt?
  • Externe Systeme: Welche Datenbanken, Message Queues und APIs sind angebunden?

Der .NET Portability Analyzer und der Upgrade Assistant helfen, diese Abhängigkeiten systematisch zu erfassen.

Datenbankmigration nicht vergessen

Die Anwendung ist nur die halbe Miete. Oft nutzen Legacy-Systeme Entity Framework 6, das auf .NET 8 nicht läuft. Die Migration zu Entity Framework Core erfordert Anpassungen am Datenzugriffsschicht.

Typische Änderungen:

  • EDMX-basierte Modelle zu Code-First migrieren
  • Lazy Loading explizit konfigurieren
  • Stored Procedures und Database-First-Ansätze überarbeiten
  • Connection-String-Formate anpassen

CI/CD von Anfang an

Nutzen Sie die Modernisierung als Anlass, eine moderne CI/CD-Pipeline einzuführen. Das neue System sollte von Anfang an automatisiert gebaut, getestet und deployt werden. Tools wie Azure DevOps oder GitHub Actions machen das heute einfacher denn je.

Moderne Entwicklungswerkzeuge fuer die .NET-Modernisierung

Ein typischer Zeitplan

Für eine mittelgroße Geschäftsanwendung (50.000 bis 200.000 Zeilen Code) sieht ein realistischer Zeitplan so aus:

PhaseDauerAufwand
Assessment und Strategie2 Wochen5-10 PT
Test-Infrastruktur aufbauen3-4 Wochen10-20 PT
Erste Module migrieren6-8 Wochen20-40 PT
Kernmodule migrieren8-12 Wochen30-60 PT
Integration und Testing4 Wochen15-25 PT
Gesamt6-9 Monate80-155 PT

Das klingt nach viel. Aber bedenken Sie: Die Alternative ist ein System, das mit jedem Jahr teurer in der Wartung wird und irgendwann ein unkalkulierbares Sicherheitsrisiko darstellt.

Fazit

Die Modernisierung von Legacy-.NET-Systemen ist kein Selbstzweck, sondern eine Investition in die Zukunftsfähigkeit Ihres Unternehmens. Der beste Ansatz für die meisten Unternehmen ist das Strangler-Fig-Pattern: schrittweise, risikoarm und mit sofortigem Mehrwert.

Entscheidend ist, nicht auf den perfekten Zeitpunkt zu warten. Jeder neue Monat, in dem Features im alten System entwickelt werden, erhöht die Migrationskosten. Beginnen Sie jetzt — und wenn es nur mit einem Assessment ist, das die aktuelle Situation transparent macht.

Bei IT-Trail haben wir zahlreiche .NET-Modernisierungsprojekte begleitet, von kleinen Fachapplikationen bis zu komplexen Unternehmenslösungen. Wir kennen die typischen Fallstricke und wissen, wie man sie vermeidet.


Sie möchten Ihre Legacy-.NET-Anwendung modernisieren und zukunftssicher machen? IT-Trail GmbH unterstützt Sie von der Strategie bis zur Umsetzung. Vereinbaren Sie ein kostenloses Erstgespräch und lassen Sie uns gemeinsam Ihre Möglichkeiten besprechen.

Über den Autor

Markus Furtlehner

Gründer & Geschäftsführer, IT-Trail GmbH

Mehr über den Autor