Migrera från ASP.NET Framework till ASP.NET Core

Att uppdatera en app från ASP.NET Framework till ASP.NET Core är inte trivialt för de flesta produktionsappar. Dessa appar innehåller ofta ny teknik när de blir tillgängliga och består ofta av många äldre beslut. Den här guiden innehåller praktiska metoder och verktyg för att uppdatera ASP.NET Framework-appar till ASP.NET Core med så lite förändring som möjligt.

Varför migrering är utmanande

Migrering från ASP.NET Framework till ASP.NET Core innebär flera komplexa utmaningar som gör en fullständig omskrivning svår och riskfylld för de flesta produktionsprogram:

Teknisk skuldackumulering

Produktionsprogram ackumulerar ofta tekniska skulder under flera års utveckling:

  • System.Web-beroenden – Den genomgripande användningen av HttpContext och associerade typer i en kodbas.
  • Inaktuella paketberoenden som kanske inte har moderna kompatibla motsvarigheter.
  • Äldre byggverktyg och projektkonfigurationer som inte är kompatibla med moderna .NET.
  • Inaktuell API-användning som måste ersättas med moderna alternativ.
  • Kompilatorvarningar och kodkvalitetsproblem som komplicerar migreringen.

Övergripande problem

Många program har övergripande problem som sträcker sig över flera lager och behöver noggrann samordning under migreringen:

  • Hantering av sessionstillstånd – ASP.NET Framework och ASP.NET Core har fundamentalt olika sessions-API:er och beteenden.
  • Autentisering och auktorisering – Olika autentiseringsmodeller och API:er mellan ramverk.
  • Loggning och övervakning – Behöver upprätthålla konsekvent loggning i båda programmen under migreringen.
  • Strategier för cachelagring – Cachelagring i minnet, distribuerad eller utdata måste upprätthållas konsekvent.
  • Felhantering – Upprätta konsekventa mönster för felhantering i båda programmen.
  • Konfigurationshantering – Hantera inställningar som måste delas eller synkroniseras mellan program.
  • Beroendeinmatning – Migrera från olika DI-containrar till ASP.NET Core inbyggda container.

Det allmänna värdmönstret kan hjälpa dig att lösa flera av dessa problem genom att använda modern .NET-infrastruktur till ASP.NET Framework-program. Mer information finns i .NET Generic Host i ASP.NET Framework.

Beroendekedjor för bibliotek

Stödbibliotek har ofta komplexa beroenderelationer som kräver noggrann uppgraderingsordning:

  • Komplexitet i beroendeträd – Du måste uppgradera biblioteken i sökordningen efter ordningens djup.
  • Krav för flera mål – Biblioteken måste ha stöd för alla ramverksversioner som appen riktar in sig på.
  • API-kompatibilitet – Se till att bibliotek fungerar med båda ramverksversionerna under migreringsperioden.
  • Testkomplexitet – Varje biblioteksuppgradering kräver noggrann testning för att säkerställa kompatibilitet.

Skillnader i programarkitektur

De grundläggande skillnaderna mellan ASP.NET Framework och ASP.NET Core skapa extra utmaningar:

  • Värdmodeller – Olika metoder för applikations-hosting och livscykelhantering av applikationer
  • Middleware pipeline – Gå över från HTTP-moduler och -hanterare till middleware
  • Bearbetning av begäranden – olika modeller och kontexter för bearbetning av begäranden
  • Prestandaegenskaper – Olika minnesanvändningsmönster och prestandaprofiler

Dessa utmaningar gör inkrementell migrering till den bästa metoden för de flesta produktionsprogram. Med den här metoden kan teamen åtgärda dessa problem gradvis samtidigt som de underhåller ett fungerande program i produktion.

Dokumentation om viktiga områden som har ändrats finns i de associerade ämnena som finns i Komplexa migreringsscenarier – Djupdykningsområden.

Börja här: Välj din migreringssökväg

Du kan flytta ditt ASP.NET Framework-program till ASP.NET Core. Nyckeln är att välja rätt metod för din specifika situation.

Tips

Oavsett vilken sökväg du väljer kan GitHub-Copilot-appen moderniseringsagenten utvärdera din lösning, generera en uppgraderingsplan och automatisera många av migreringsstegen. Mer information finns i Lär dig att uppgradera från ASP.NET MVC, webb-API och webbformulär till ASP.NET Core.

Snabb beslutsguide

Besvara dessa frågor för att välja din metod:

  1. Vad är din tidslinje och risktolerans?

  2. Hur stort är ditt program?

  3. Har du komplexa beroenden?

Inkrementell migrering

Inkrementell migrering är en implementering av Strangler Fig-mönstret. Det är bäst för större projekt eller projekt som måste fortsätta att vara i produktion under en migrering. Om du vill komma igång med att migrera ett program inkrementellt kan du läsa Kom igång med inkrementell migrering från ASP.NET till ASP.NET Core.

Migrering på plats

På plats kan migreringen fungera för tillräckligt små program. Om möjligt möjliggör den här metoden en snabb ersättning av programmet. Små problem kan dock förvärras om du bestämmer dig för att utföra en migrering på plats. Information om alternativ för migreringsverktyg finns i Lär dig att uppgradera från ASP.NET MVC, webb-API och webbformulär till ASP.NET Core.