Delen via


Aan de slag met incrementele ASP.NET naar ASP.NET Core-migratie

Important

Voordat u begint: in dit artikel wordt ervan uitgegaan dat u het overzicht van de ASP.NET Core-migratie hebt gelezen. Als u deze nog niet hebt gelezen, begint u met het begrijpen van de concepten, benaderingen en voordelen van incrementele migratie.

Voor een grote migratie raden we u aan een ASP.NET Core-app in te stellen die proxy's naar de oorspronkelijke .NET Framework-app uitvoeren. De nieuwe proxy-app wordt weergegeven in de volgende afbeelding:

beginnen met het migreren van routes

Dit artikel bevat de praktische stappen om door te gaan met een incrementele migratie nadat u de aanpak hebt begrepen.

Prerequisites

Voordat u begint met de incrementele migratie, moet u ervoor zorgen dat u het volgende hebt:

  1. Lees het overzicht: Incrementele ASP.NET naar ASP.NET Kernmigratie
  2. Een werkende ASP.NET Framework-toepassing die u wilt migreren
  3. Visual Studio 2022 met de nieuwste updates
  4. .NET 8 of hoger SDK geïnstalleerd
  5. Inzicht in de afhankelijkheden van uw toepassing en bibliotheken van derden

Overzicht van migratiestappen

Het incrementele migratieproces volgt de volgende belangrijke stappen:

  1. ASP.NET Core Project instellen
  2. Technische schuld remediëren
  3. Overkoepelende zorgen identificeren en aanpakken
  4. Ondersteunende bibliotheken upgraden

ASP.NET Core Project instellen

De eerste stap is het maken van de nieuwe ASP.NET Core-toepassing die als uw proxy fungeert.

Wat u gaat doen:

  • Een nieuw ASP.NET Core-project maken naast uw bestaande ASP.NET Framework-app
  • Configureer deze om verzoeken door te sturen naar uw originele applicatie via YARP (Yet Another Reverse Proxy)
  • De basisinfrastructuur instellen voor incrementele migratie

Gedetailleerde instructies:

Verhelpen van technische schuld

Wanneer moet u deze stap uitvoeren: Voordat u ondersteunende bibliotheken bijwerkt, moet u technische schulden oplossen die het migratieproces kunnen bemoeilijken.

Voordat u begint met het upgraden van uw ondersteunende bibliotheken, is het belangrijk om technische schulden op te schonen die het migratieproces kunnen verstoren. Deze stap moet eerst worden voltooid om een soepelere upgrade-ervaring te garanderen.

Pakketafhankelijkheden bijwerken

Controleer en werk uw NuGet-pakketten bij naar de nieuwste compatibele versies:

  1. Bestaande pakketten controleren: NuGet Package Manager van Visual Studio gebruiken omdat de dotnet CLI niet werkt voor ASP.NET Framework-toepassingen
  2. Updatepakketten incrementeel: Updatepakketten één voor één om compatibiliteitsproblemen te voorkomen
  3. Testen na elke update: Zorg ervoor dat uw toepassing nog steeds correct werkt na elke pakketupdate
  4. Breekbare veranderingen adresseren: sommige pakketupdates kunnen breekbare veranderingen introduceren die moeten worden aangepakt

Modernisering van buildhulpprogramma's

Werk uw buildhulpprogramma's en projectconfiguratie bij:

  1. Hulpprogramma's bijwerken: Zorg ervoor dat u een recente versie van MSBuild/Visual Studio gebruikt
  2. Migreren naar PackageReference voor afhankelijkheden: Overweeg om te migreren van packages.config naar PackageReference indeling als u het webtoepassingsproject nog niet hebt geopend
  3. Ongebruikte verwijzingen opschonen: verwijder ongebruikte assemblyverwijzingen of NuGet-pakketten
  4. Migreren naar projectbestanden in SDK-stijl: converteer uw bestaande projectbestanden naar de moderne SDK-indeling. Dit is essentieel voor compatibiliteit met moderne .NET-projecten en biedt betere ondersteuning voor hulpprogramma's
  5. Buildscripts bijwerken: aangepaste buildscripts of CI/CD-configuraties controleren en bijwerken

Problemen met de kwaliteit van code oplossen

Bekende problemen met de kwaliteit van code oplossen die de migratie kunnen bemoeilijken:

  1. Compilerwaarschuwingen oplossen: los eventuele compilerwaarschuwingen op, met name waarschuwingen met betrekking tot afgeschafte API's
  2. Dode code verwijderen: ongebruikte klassen, methoden en andere code-elementen opschonen
  3. Afgeschaft API-gebruik bijwerken: vervang waar mogelijk het gebruik van afgeschafte API's door hun moderne equivalenten

Dit voorbereidingswerk maakt het upgradeproces van de bibliotheek veel soepeler en vermindert de kans op complexe problemen tijdens de migratie.

Overkoepelende aandachtspunten identificeren en adresseren

Wanneer moet u deze stap uitvoeren: Terwijl u technische schulden herstelt, maar voordat u ondersteunende bibliotheken bijwerkt, identificeert en configureert u kruislingse problemen die van invloed zijn op uw hele toepassing.

Overkoepelende kwesties zijn aspecten van uw toepassing die meerdere lagen of componenten omvatten, zoals verificatie, sessiebeheer, logging en caching. Deze moeten vroeg in het migratieproces worden aangepakt, omdat ze van invloed zijn op de wijze waarop uw ASP.NET Framework en ASP.NET Core-toepassingen communiceren en de status delen tijdens de incrementele migratie.

In de volgende secties worden de meest voorkomende kruislingse problemen behandeld. Configureer alleen de toepassingen die van toepassing zijn op uw toepassing:

Configuratie van sessieondersteuning

Configureer dit als: Uw ASP.NET Framework-toepassing maakt gebruik van sessiestatus.

Raadpleeg de algemene documentatie voor sessiemigratie voor hulp hier.

Sessie is een veelgebruikte functie van ASP.NET die de naam deelt met een functie in ASP.NET Core, maar de API's zijn veel anders. Bij het upgraden van bibliotheken die de sessiestatus gebruiken, moet u sessieondersteuning configureren. Raadpleeg de documentatie over ondersteuning voor externe sessies voor gedetailleerde richtlijnen over het inschakelen van sessiestatusdeling tussen uw toepassingen.

Authenticatieconfiguratie

Configureer dit als: Uw ASP.NET Framework-toepassing maakt gebruik van verificatie en u wilt de verificatiestatus delen tussen de oude en nieuwe toepassingen.

Raadpleeg de algemene documentatie voor authenticatiemigratie voor begeleiding.

Het is mogelijk om verificatie te delen tussen de oorspronkelijke ASP.NET-app en de nieuwe ASP.NET Core-app met behulp van de externe verificatiefunctie system.webadapters. Met deze functie kan de ASP.NET Core-app verificatie uitstellen naar de oorspronkelijke ASP.NET-app. Zie de documentatie over externe verificatie voor meer informatie.

Andere kruislingse overwegingen om rekening mee te houden

Afhankelijk van uw toepassing moet u mogelijk ook het volgende aanpakken:

  • Logboekregistratie: zorg voor consistente logboekregistratie in beide toepassingen. Overweeg om een provider voor gedeelde logboekregistratie te gebruiken of ervoor te zorgen dat logboeken correct worden samengevoegd.
  • Caching: Als uw toepassing caching gebruikt (in-memory, gedistribueerd of uitvoercaching), kunt u plannen hoe u cacheconsistentie tussen toepassingen onderhoudt.
  • Foutafhandeling: consistente foutafhandeling en rapportage in zowel het ASP.NET Framework als ASP.NET Core-toepassingen tot stand brengen.
  • Configuratiebeheer: plan hoe configuratie-instellingen worden gedeeld of beheerd tussen de twee toepassingen.
  • Statuscontrole: stel bewakings- en statuscontroles in voor beide toepassingen tijdens het migratieproces.
  • Afhankelijkheidsinjectie: als u een DI-container in uw ASP.NET Framework-app gebruikt, plant u de migratie naar de ingebouwde DI-container van ASP.NET Core.

Ondersteunende bibliotheken upgraden

Wanneer moet u deze stap uitvoeren: Alleen wanneer u specifieke routes wilt migreren die afhankelijk zijn van klassebibliotheken die bedrijfslogica bevatten, moet u delen tussen de oude en nieuwe toepassingen.

Note

Incrementele benadering: Met het incrementele migratieproces hoeft u niet al uw ondersteunende bibliotheken tegelijk te upgraden. U hoeft alleen de bibliotheken te upgraden die vereist zijn voor de specifieke routes die u momenteel migreert. Hierdoor kunt u de migratie in kleinere, beter beheerbare onderdelen aanpakken.

Proces voor bibliotheekupgrade

Important

Ondersteunende bibliotheken moeten worden bijgewerkt in een postorder diepte-eerst zoekvolgorde. Dit betekent:

  1. Begin met bladafhankelijkheden: Begin met bibliotheken die geen afhankelijkheden hebben van andere bibliotheken in uw oplossing
  2. Werk omhoog door de afhankelijkheidsstructuur: Voer alleen een upgrade uit van een bibliotheek nadat alle afhankelijkheden zijn bijgewerkt
  3. Eindig met de hoofdtoepassing: De hoofdtoepassing ASP.NET Framework moet het laatste item zijn dat moet worden gewijzigd

Deze volgorde is essentieel omdat:

  • Het zorgt ervoor dat bij het upgraden van een bibliotheek alle afhankelijkheden al compatibel zijn
  • Hiermee voorkomt u problemen met kringafhankelijkheid tijdens het upgradeproces
  • Hiermee kunt u elke bibliotheek onafhankelijk testen voordat u naar de afhankelijken ervan gaat

OPMERKING: U hoeft deze volgorde alleen te volgen voor de subset van bibliotheken die vereist zijn voor de routes die u momenteel migreert, niet uw hele oplossing.

Upgradeproces voor elke bibliotheek:

Als u ondersteunende bibliotheken in uw oplossing hebt die u moet gebruiken voor de routes die u migreert, moeten ze indien mogelijk worden bijgewerkt naar .NET Standard 2.0. Modernisering van GitHub Copilot-apps kan u hierbij helpen. Als bibliotheken zich niet kunnen richten op .NET Standard, kunt u .NET 8 of hoger instellen, samen met het .NET Framework-doel in het oorspronkelijke project of in een nieuw project naast het origineel.

De System.Web-adapters kunnen in deze bibliotheken worden gebruikt om ondersteuning voor HttpContext gebruik in klassebibliotheken mogelijk te maken. Als u HttpContext gebruik in een bibliotheek wilt inschakelen:

  1. Verwijzing naar System.Web verwijderen in het projectbestand
  2. Het Microsoft.AspNetCore.SystemWebAdapters-pakket toevoegen
  3. Schakel meerdere doelen in en voeg een .NET 8-doel of hoger toe of converteer het project naar .NET Standard 2.0.

Deze stap vereist mogelijk dat verschillende projecten worden gewijzigd, afhankelijk van uw oplossingsstructuur en welke routes u migreert. Met de modernisering van GitHub Copilot-apps kunt u bepalen welke stappen u moet wijzigen en automatiseren in het proces.

Volgende stappen

Nadat u de bovenstaande stappen voor de installatie en bibliotheekupgrade hebt voltooid:

  1. Begin klein: begin met het migreren van eenvoudige, staatloze eindpunten eerst
  2. Grondig testen: Zorg ervoor dat elk gemigreerd onderdeel correct werkt in beide omgevingen
  3. Prestaties bewaken: Let op eventuele gevolgen voor de prestaties van de proxy-installatie
  4. Herhalen: Doorgaan met het incrementeel migreren van onderdelen totdat de migratie is voltooid