Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Bevor Sie beginnen: In diesem Artikel wird davon ausgegangen, dass Sie die Übersicht über die ASP.NET Core-Migration gelesen haben. Wenn Sie sie noch nicht gelesen haben, beginnen Sie mit diesem Artikel, um die Konzepte, den Ansatz und die Vorteile der inkrementellen Migration zu verstehen.
Für eine große Migration empfehlen wir, eine ASP.NET Core-App einzurichten, die sich auf die ursprüngliche .NET Framework-App proxiest. Die neue Proxy-aktivierte App wird in der folgenden Abbildung angezeigt:
Dieser Artikel enthält die praktischen Schritte, um mit einer inkrementellen Migration fortzufahren, nachdem Sie den Ansatz verstanden haben.
Voraussetzungen
Stellen Sie vor dem Starten der inkrementellen Migration folgendes sicher:
- Lesen Sie die Übersicht: Inkrementelle ASP.NET zur ASP.NET Core-Migration
- Eine funktionierende ASP.NET Framework-Anwendung , die Sie migrieren möchten
- Visual Studio 2022 mit den neuesten Updates
- .NET 8 oder höher SDK installiert
- Grundlegendes zu den Abhängigkeiten Ihrer Anwendung und Drittanbieterbibliotheken
Migrationsschritte – Übersicht
Der inkrementelle Migrationsprozess folgt den folgenden wichtigen Schritten:
- Einrichten ASP.NET Kernprojekts
- Technische Schulden beheben
- Identifizieren und Beheben von grenzüberschreitenden Bedenken
- Upgrade von unterstützenden Bibliotheken
Einrichten ASP.NET Kernprojekts
Der erste Schritt besteht darin, die neue ASP.NET Core-Anwendung zu erstellen, die als Proxy dient.
Was Sie tun werden:
- Erstellen eines neuen ASP.NET Core-Projekts zusammen mit Ihrer vorhandenen ASP.NET Framework-App
- Konfigurieren Sie es, um Anfragen an Ihre ursprüngliche Anwendung mithilfe von YARP (Noch ein anderer Reverse Proxy) weiterzuleiten.
- Einrichten der grundlegenden Infrastruktur für die inkrementelle Migration
Detaillierte Anweisungen:
- Informationen zum Einrichten einer Anwendung für die inkrementelle Migration finden Sie unter Remote-App-Setup .
- Lesen Sie Lernen Sie, wie Sie von ASP.NET MVC, Web API und Web Forms zu ASP.NET Core aktualisieren, um Hilfe beim Einrichten von Projekten zu erhalten, die für die inkrementelle Migration mit Visual Studio-Tooling erforderlich sind.
Technische Schulden beheben
Gehen Sie wie folgt vor: Bevor Sie unterstützende Bibliotheken aktualisieren, beheben Sie technische Schulden, die den Migrationsprozess erschweren könnten.
Bevor Sie mit dem Upgrade Ihrer unterstützenden Bibliotheken beginnen, ist es wichtig, technische Schulden zu bereinigen, die den Migrationsprozess beeinträchtigen könnten. Dieser Schritt sollte zuerst abgeschlossen werden, um eine reibungslosere Upgradeerfahrung sicherzustellen.
Paketabhängigkeiten aktualisieren
Überprüfen und aktualisieren Sie Ihre NuGet-Pakete auf ihre neuesten kompatiblen Versionen:
-
Überwachen vorhandener Pakete: Verwenden Sie den NuGet-Paket-Manager von Visual Studio, da die
dotnetCLI für ASP.NET Framework-Anwendungen nicht funktioniert. - Inkrementelles Aktualisieren von Paketen: Aktualisieren von Paketen einzeln, um Kompatibilitätsprobleme zu vermeiden
- Test nach jedem Update: Stellen Sie sicher, dass Ihre Anwendung nach jedem Paketupdate immer noch ordnungsgemäß funktioniert
- Änderungen an Adressen vornehmen: Einige Paketaktualisierungen können Änderungen mit sich bringen, die behoben werden müssen.
Modernisieren von Buildtools
Aktualisieren Sie Die Buildtools und die Projektkonfiguration:
- Updatetools: Stellen Sie sicher, dass Sie eine aktuelle Version von MSBuild/Visual Studio verwenden
-
Migrieren zu PackageReference für Abhängigkeiten: Erwägen Sie die Migration vom
packages.config-Format zumPackageReference-Format, wenn Sie dies noch nicht im Webanwendungsprojekt umgesetzt haben. - Bereinigung ungenutzter Referenzen: Entfernen Sie alle nicht verwendeten Assembly-Referenzen oder NuGet-Pakete
- Migrieren Sie zu PROJEKTdateien im SDK-Stil: Konvertieren Sie Ihre vorhandenen Projektdateien in das moderne SDK-Format. Dies ist für die Kompatibilität mit modernen .NET-Projekten unerlässlich und bietet eine bessere Toolunterstützung.
- Aktualisieren von Buildskripts: Überprüfen und Aktualisieren von benutzerdefinierten Buildskripts oder CI/CD-Konfigurationen
Beheben von Problemen mit der Codequalität
Beheben bekannter Codequalitätsprobleme, die die Migration erschweren könnten:
- Beheben von Compilerwarnungen: Beheben von Compilerwarnungen, insbesondere im Zusammenhang mit veralteten APIs
- Entfernen von inaktivem Code: Bereinigen nicht verwendeter Klassen, Methoden und anderer Codeelemente
- Veraltete API-Verwendung aktualisieren: Ersetzen der Verwendung veralteter APIs durch ihre modernen Entsprechungen, sofern möglich
Durch diese Vorbereitung wird der Bibliotheksupgradeprozess wesentlich reibungsloser gestaltet und die Wahrscheinlichkeit reduziert, dass während der Migration komplexe Probleme auftreten.
Identifizieren und Beheben von grenzüberschreitenden Bedenken
Gehen Sie wie folgt vor: Bei der Behebung technischer Schulden, aber vor dem Upgrade der unterstützenden Bibliotheken identifizieren und konfigurieren Sie grenzüberschreitende Bedenken, die sich auf Ihre gesamte Anwendung auswirken.
Querschnittsaspekte sind Aspekte Ihrer Anwendung, die mehrere Ebenen oder Komponenten umfassen, z. B. Authentifizierung, Sitzungsverwaltung, Protokollierung und Zwischenspeicherung. Diese müssen frühzeitig im Migrationsprozess behandelt werden, da sie sich darauf auswirken, wie Ihr ASP.NET Framework und ASP.NET Core-Anwendungen während der inkrementellen Migration kommunizieren und den Status freigeben.
In den folgenden Abschnitten werden die am häufigsten auftretenden Querüberlegungen behandelt. Konfigurieren Sie nur die, die für Ihre Anwendung gelten:
Sitzungsunterstützungskonfiguration
Konfigurieren Sie folgendes, wenn: Ihre ASP.NET Framework-Anwendung verwendet den Sitzungszustand.
Eine Anleitung finden Sie in der allgemeinen Sitzungsmigrationsdokumentation .
Sitzung ist ein häufig verwendetes Feature von ASP.NET, das den Namen mit einem Feature in ASP.NET Core teilt, die APIs sind jedoch viel anders. Beim Aktualisieren von Bibliotheken, die den Sitzungsstatus verwenden, müssen Sie die Sitzungsunterstützung konfigurieren. Siehe die Dokumentation zu Remote-Sitzungsunterstützung für eine ausführliche Anleitung, wie Sie die gemeinsame Nutzung des Sitzungsstatus zwischen Ihren Anwendungen aktivieren können.
Authentifizierungskonfiguration
Konfigurieren Sie folgendes, wenn: Ihre ASP.NET Framework-Anwendung verwendet die Authentifizierung und möchten den Authentifizierungsstatus zwischen den alten und neuen Anwendungen freigeben.
Siehe die allgemeine Dokumentation zur Authentifizierungsmigration zur Anleitung hier ein.
Es ist möglich, die Authentifizierung zwischen der ursprünglichen ASP.NET-App und der neuen ASP.NET Core-App mithilfe des Remoteauthentifizierungsfeatures "System.Web adapters" zu teilen. Mit diesem Feature kann die ASP.NET Core-App die Authentifizierung auf die ursprüngliche ASP.NET-App zurückstellen. Weitere Informationen finden Sie in der Dokumentation zur Remoteauthentifizierung .
Weitere übergreifende Bedenken, die berücksichtigt werden sollten
Je nach Anwendung müssen Sie möglicherweise auch Folgendes adressieren:
- Protokollierung: Stellen Sie eine konsistente Protokollierung für beide Anwendungen sicher. Erwägen Sie die Verwendung eines freigegebenen Protokollierungsanbieters oder stellen Sie sicher, dass Protokolle ordnungsgemäß aggregiert werden.
- Zwischenspeichern: Wenn Ihre Anwendung Zwischenspeicherung (Zwischenspeicherung im Arbeitsspeicher, verteilt oder Ausgabezwischenspeicherung) verwendet, planen Sie, wie die Cachekonsistenz zwischen Anwendungen beibehalten wird.
- Fehlerbehandlung: Richten Sie einheitliche Fehlerbehandlung und -berichterstellung sowohl im ASP.NET Framework als auch in ASP.NET Core-Anwendungen ein.
- Konfigurationsverwaltung: Planen Sie, wie Konfigurationseinstellungen zwischen den beiden Anwendungen gemeinsam genutzt oder verwaltet werden.
- Gesundheitsüberwachung: Richten Sie Überwachungs- und Gesundheitsprüfungen für beide Anwendungen während des Migrationsprozesses ein.
- Abhängigkeitsinjektion: Wenn Sie einen DI-Container in Ihrer ASP.NET Framework-App verwenden, planen Sie die Migration zum integrierten DI-Container von Core ASP.NET.
Upgrade von unterstützenden Bibliotheken
Gehen Sie wie folgt vor: Nur wenn Sie bestimmte Routen migrieren müssen, die von Klassenbibliotheken abhängen, die Geschäftslogik enthalten, müssen Sie zwischen den alten und neuen Anwendungen teilen.
Hinweis
Inkrementeller Ansatz: Mit dem inkrementellen Migrationsprozess müssen Sie nicht alle unterstützenden Bibliotheken gleichzeitig aktualisieren. Sie müssen nur die Bibliotheken aktualisieren, die für die aktuell migrierten spezifischen Routen erforderlich sind. Auf diese Weise können Sie die Migration in kleineren, verwaltbaren Teilen angehen.
Bibliotheksupgradeprozess
Von Bedeutung
Unterstützende Bibliotheken müssen in einem Upgrade-Prozess aktualisiert werden. Postorder-Suchreihenfolge mit Tiefenerster Suche. Dies bedeutet:
- Beginnen Sie mit Blattabhängigkeiten: Beginnen Sie mit Bibliotheken, die keine Abhängigkeiten von anderen Bibliotheken in Ihrer Lösung haben.
- Arbeiten Sie mit der Abhängigkeitsstruktur nach oben: Aktualisieren Sie nur eine Bibliothek, nachdem alle Abhängigkeiten erfolgreich aktualisiert wurden.
- Beenden mit der Hauptanwendung: Die Hauptanwendung des ASP.NET-Frameworks sollte zuletzt geändert werden.
Diese Sortierung ist unerlässlich, da:
- Es stellt sicher, dass alle Abhängigkeiten bereits kompatibel sind, wenn Sie ein Upgrade einer Bibliothek durchführen.
- Es verhindert Zirkelabhängigkeitsprobleme während des Upgradeprozesses
- Sie können jede Bibliothek unabhängig testen, bevor Sie zu ihren Nachfolgern wechseln.
HINWEIS: Sie müssen diese Reihenfolge nur für die Teilmenge der Bibliotheken befolgen, die von den Routen benötigt werden, die Sie derzeit migrieren, und nicht für Ihre gesamte Lösung.
Upgradeprozess für jede Bibliothek:
Wenn Sie über unterstützende Bibliotheken in Ihrer Lösung verfügen, die Sie für die Routen verwenden müssen, die Sie migrieren, sollten diese nach Möglichkeit auf .NET Standard 2.0 aktualisiert werden. Die Modernisierung der GitHub Copilot-App kann Ihnen dabei helfen. Wenn Bibliotheken nicht auf .NET Standard abzielen können, können Sie .NET 8 oder höher zusammen mit dem .NET Framework-Ziel im ursprünglichen Projekt oder in einem neuen Projekt zusammen mit dem Original als Ziel verwenden.
Die System.Web-Adapter kann in diesen Bibliotheken verwendet werden, um die Unterstützung für HttpContext Verwendung in Klassenbibliotheken. Um die Verwendung von HttpContext in einer Bibliothek zu aktivieren:
- Entfernen des Verweises
System.Webin der Projektdatei - Hinzufügen des Pakets
Microsoft.AspNetCore.SystemWebAdapters - Aktivieren Sie das Multi-Targeting und fügen Sie ein .NET 8 Target oder höher hinzu, oder konvertieren Sie das Projekt in .NET Standard 2.0.
Dieser Schritt kann erfordern, dass sich eine Reihe von Projekten ändern, abhängig von Ihrer Lösungsstruktur und den Routen, die Sie migrieren. Die GitHub Copilot-App-Modernisierung kann Ihnen dabei helfen, zu ermitteln, welche Personen eine Reihe von Schritten im Prozess ändern und automatisieren müssen.
Nächste Schritte
Nachdem Sie die Oben beschriebenen Schritte zum Setup- und Bibliotheksupgrade abgeschlossen haben:
- Beginnen Sie klein: Beginnen Sie zunächst mit der Migration einfacher, zustandsloser Endpunkte
- Gründlich testen: Stellen Sie sicher, dass jede migrierte Komponente in beiden Umgebungen ordnungsgemäß funktioniert
- Überwachen der Leistung: Überwachen sie alle Leistungsauswirkungen aus dem Proxysetup
- Iterate: Fortsetzen der inkrementellen Migration von Komponenten, bis die Migration abgeschlossen ist