Migrieren von ASP.NET Framework zu ASP.NET Core

Das Aktualisieren einer App von ASP.NET Framework auf ASP.NET Core ist für den Großteil der Produktions-Apps nicht trivial. Diese Apps enthalten häufig neue Technologien, sobald sie verfügbar sind und häufig aus vielen Legacyentscheidungen bestehen. Dieses Handbuch bietet praktische Ansätze und Tools zum Aktualisieren von ASP.NET Framework-Apps auf ASP.NET Core mit so wenig Änderung wie möglich.

Warum die Migration eine Herausforderung darstellt

Die Migration von ASP.NET Framework zu ASP.NET Core umfasst mehrere komplexe Herausforderungen, die ein vollständiges Umschreiben schwierig und riskant für die meisten Produktionsanwendungen machen:

Technische Schuldenakkumulation

Produktionsanwendungen sammeln im Laufe der Jahre der Entwicklung häufig technische Schulden:

  • System.Web-Abhängigkeiten – Die weitreichende Verwendung von HttpContext und zugehörigen Typen in einer Codebasis.
  • Veraltete Paketabhängigkeiten , die möglicherweise keine modernen kompatiblen Entsprechungen haben.
  • Ältere Buildtools und Projektkonfigurationen, die nicht mit modernen .NET kompatibel sind.
  • Veraltete API-Verwendung , die durch moderne Alternativen ersetzt werden muss.
  • Compilerwarnungen und Codequalitätsprobleme , die die Migration erschweren.

Übergreifende Belange

Viele Anwendungen haben querschnittsübergreifende Bedenken, die sich über mehrere Ebenen erstrecken und während der Migration sorgfältig koordiniert werden müssen:

  • Sitzungsstatusverwaltung – ASP.NET Framework und ASP.NET Core weisen grundsätzlich unterschiedliche Sitzungs-APIs und -Verhaltensweisen auf.
  • Authentifizierung und Autorisierung – Verschiedene Authentifizierungsmodelle und APIs zwischen Frameworks.
  • Protokollierung und Überwachung – Muss die konsistente Protokollierung in beiden Anwendungen während der Migration beibehalten.
  • Cachingstrategien – In-Memory-, verteiltes oder Ausgabecaching müssen konsistent verwaltet werden.
  • Fehlerbehandlung – Erstellen konsistenter Fehlerbehandlungsmuster in beiden Anwendungen.
  • Konfigurationsverwaltung – Verwalten von Einstellungen, die zwischen Anwendungen freigegeben oder synchronisiert werden müssen.
  • Abhängigkeitseinfügung – Migrieren von verschiedenen DI-Containern zum integrierten Container ASP.NET Core.

Das generische Hostmuster kann dabei helfen, mehrere dieser Probleme zu beheben, indem moderne .NET-Infrastruktur zu ASP.NET Framework-Anwendungen hinzugefügt wird. Ausführliche Informationen finden Sie unter .NET Generic Host in ASP.NET Framework.

Abhängigkeitsketten der Bibliothek

Die unterstützenden Bibliotheken weisen häufig komplexe Abhängigkeitsbeziehungen auf, die eine sorgfältige Reihenfolge der Aktualisierungen erfordern.

  • Komplexität der Abhängigkeitsstruktur - Sie müssen die Bibliotheken in der Reihenfolge der Tiefensuche (Postorder) aktualisieren.
  • Multi-Targeting-Anforderungen – Bibliotheken müssen alle Ziel-Frameworkversionen unterstützen, die von der App angezielt werden.
  • API-Kompatibilität – Sicherstellen, dass Bibliotheken während des Migrationszeitraums mit beiden Frameworkversionen funktionieren.
  • Testkomplexität – Jedes Bibliotheksupgrade erfordert gründliche Tests, um die Kompatibilität zu gewährleisten.

Unterschiede bei der Anwendungsarchitektur

Die grundlegenden Unterschiede zwischen ASP.NET Framework und ASP.NET Core zusätzliche Herausforderungen schaffen:

  • Hostingmodelle – Unterschiedliche Ansätze für die Anwendungshosting- und Lebenszyklusverwaltung
  • Middleware-Pipeline – Wechsel von HTTP-Modulen und -Handlern zu Middleware
  • Anforderungsverarbeitung – Verschiedene Anforderungsverarbeitungsmodelle und Kontexte
  • Leistungsmerkmale – Unterschiedliche Speicherauslastungsmuster und Leistungsprofile

Diese Herausforderungen machen die inkrementelle Migration zum bevorzugten Ansatz für die meisten Produktionsanwendungen. Mit diesem Ansatz können Teams diese Probleme schrittweise behandeln und gleichzeitig eine funktionierende Anwendung in der Produktion beibehalten.

Dokumentationen zu wichtigen Bereichen, die sich geändert haben, finden Sie in den zugehörigen Themen, die in komplexen Migrationsszenarien verfügbar sind – Deep Dive-Bereiche.

Beginnen Sie hier: Wählen Sie Ihren Migrationspfad aus.

Sie können Ihre ASP.NET Framework-Anwendung erfolgreich in ASP.NET Core verschieben. Der Schlüssel ist die Wahl des richtigen Ansatzes für Ihre spezifische Situation.

Tip

Unabhängig vom gewählten Pfad kann der GitHub-App Copilot Modernisierungs-Agent Ihre Lösung bewerten, einen Upgradeplan generieren und viele der Migrationsschritte automatisieren. Weitere Informationen finden Sie unter "Informationen zum Upgrade von ASP.NET MVC,Web-API und Webformularen auf ASP.NET Core".

Schnellentscheidungsleitfaden

Beantworten Sie diese Fragen, um Ihren Ansatz auszuwählen:

  1. Wie sieht Ihr Zeitrahmen und Ihre Risikotoleranz aus?

  2. Wie groß ist Ihre Anwendung?

  3. Haben Sie komplexe Abhängigkeiten?

Inkrementelle Migration

Die inkrementelle Migration ist eine Implementierung des Strangler Fig-Musters. Dies eignet sich am besten für größere Projekte oder Projekte, die während einer Migration weiterhin in der Produktion bleiben müssen. Informationen zum inkrementellen Migrieren einer Anwendung finden Sie unter "Erste Schritte mit inkrementellen ASP.NET zur ASP.NET Core Migration".

Vor-Ort-Migration

Die Vor-Ort-Migration kann für ausreichend kleine Anwendungen funktionieren. Wenn möglich, ermöglicht dieser Ansatz eine schnelle Ersetzung der Anwendung. Kleine Probleme können sich jedoch summieren, wenn Sie sich für eine In-Place-Migration entscheiden. Informationen zu Migrationstools finden Sie unter "Informationen zum Upgrade von ASP.NET MVC,Web-API und Webformularen auf ASP.NET Core".