Inkrementell uppdatering från ASP.NET 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 artikeln innehåller vägledning och länkar till verktyg för att uppdatera ASP.NET Framework-appar till ASP.NET Core med så lite ändring som möjligt.
En av de större utmaningarna är den genomgripande användningen av HttpContext i en kodbas. Utan den inkrementella metoden och verktygen krävs en storskalig omskrivning för att ta bort HttpContext beroende. Adaptrarna i dotnet/systemweb-adapters tillhandahåller en uppsättning runtime-hjälpfunktioner för att få åtkomst till de typer som används i ASP.NET Framework-appen på ett sätt som fungerar i ASP.NET Core med minimala ändringar.
En fullständig migrering kan ta mycket arbete beroende på appens storlek, beroenden och icke-bärbara API:er som används. För att fortsätta distribuera en app till produktion medan du arbetar med uppdatering är det bästa mönstret att följa det Strangler Fig-mönstret. Det Strangler Fig-mönstret möjliggör kontinuerlig utveckling i det gamla systemet med en inkrementell metod för att ersätta specifika funktioner med nya tjänster. Det här dokumentet beskriver hur du använder Strangler Fig-mönstret på en ASP.NET app som uppdateras mot ASP.NET Core.
Om du vill hoppa över den här översiktsartikeln och komma igång kan du läsa Kom igång.
Appmigrering till ASP.NET Core
Innan migreringen påbörjas riktar appen in sig på ASP.NET Framework och körs i Windows med dess stödbibliotek:
Migreringen börjar med att introducera en ny app baserad på ASP.NET Core som blir startpunkten. Inkommande begäranden går till appen ASP.NET Core, som antingen hanterar begäran eller skickar begäran till .NET Framework-appen via YARP-. Först finns merparten av de kod som tillhandahåller svar i .NET Framework-appen, men ASP.NET Core-appen har nu konfigurerats för att börja migrera vägar:
Om du vill migrera affärslogik som förlitar sig på HttpContext
måste biblioteken skapas med Microsoft.AspNetCore.SystemWebAdapters
. Genom att skapa biblioteken med SystemWebAdapters
kan du:
- De bibliotek som ska skapas mot .NET Framework, .NET Core eller .NET Standard 2.0.
- Säkerställer att biblioteken använder API:er som är tillgängliga i både ASP.NET Framework och ASP.NET Core.
När ASP.NET Core-appen med YARP har konfigurerats kan du börja uppdatera vägar från ASP.NET Framework till ASP.NET Core. Till exempel åtgärdsmetoder för WebAPI- eller MVC-kontroller, hanterare eller någon annan implementering av en rutt. Om vägen är tillgänglig i ASP.NET Core-appen matchas den och hanteras.
Under migreringsprocessen identifieras ytterligare tjänster och infrastruktur som måste uppdateras för att köras på .NET Core. Alternativ som anges i ordning efter hållbarhet inkluderar:
- Flytta koden till delade bibliotek
- Länka koden i det nya projektet
- Duplicera koden
Så småningom hanterar ASP.NET Core-appen fler vägar än .NET Framework-appen:
När ASP.NET Framework-appen inte längre behövs och tas bort:
- Appen körs på ASP.NET Core-appstacken, men använder fortfarande adaptrarna.
- Det återstående migreringsarbetet är att avlägsna användningen av adaptrar.
Visual Studio-tillägget .NET Upgrade Assistant kan hjälpa dig att uppgradera ASP.NET Framework-webbappar till ASP.NET Core. Mer information finns i blogginlägget Uppgradera dina .NET-projekt med Visual Studio.
System.Web Adapters
Namnområdet Microsoft.AspNetCore.SystemWebAdapters
är en samling runtime-hjälpare som underlättar användningen av kod som skrivs mot System.Web
när du flyttar till ASP.NET Core. Det finns några paket som kan användas för att använda funktioner från dessa kort:
-
Microsoft.AspNetCore.SystemWebAdapters
: Det här paketet används i stödbibliotek och tillhandahåller de System.Web-API:er som du kan ha varit beroende av, till exempelHttpContext
och andra. Det här paketet riktar sig till .NET Standard 2.0, .NET 4.5+och .NET 6+. -
Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
: Det här paketet riktar sig endast mot .NET Framework och är avsett att tillhandahålla tjänster till ASP.NET Framework-program som kan behöva tillhandahålla inkrementella migreringar. Detta förväntas vanligtvis inte refereras från bibliotek, utan snarare från själva programmen. -
Microsoft.AspNetCore.SystemWebAdapters.CoreServices
: Det här paketet riktar sig endast mot .NET 6+ och är avsett att tillhandahålla tjänster till ASP.NET Core-program för att konfigurera beteendet förSystem.Web
API:er samt välja eventuella beteenden för inkrementell migrering. Detta förväntas vanligtvis inte refereras från bibliotek, utan snarare från själva programmen. -
Microsoft.AspNetCore.SystemWebAdapters.Abstractions
: Det här paketet är ett stödpaket som tillhandahåller abstraktioner för tjänster som används av både ASP.NET Core- och ASP.NET Framework-programmet, till exempel serialisering av sessionstillstånd.
Exempel på scenarier där detta är användbart finns i adapters-artikeln.
För vägledning kring användning, se artikeln om användningsvägledning .
Ytterligare resurser
ASP.NET Core