Incrementele ASP.NET naar ASP.NET Core-update
Het bijwerken van een app van ASP.NET Framework naar ASP.NET Core is niet triviaal voor de meeste productie-apps. Deze apps bevatten vaak nieuwe technologieën wanneer ze beschikbaar komen en bestaan vaak uit veel verouderde beslissingen. Dit artikel bevat richtlijnen en koppelingen naar hulpprogramma's voor het bijwerken van ASP.NET Framework-apps naar ASP.NET Core met zo weinig mogelijk wijzigingen.
Een van de grotere uitdagingen is het enorme gebruik van HttpContext in een codebasis. Zonder de incrementele benadering en hulpprogramma's is een grootschalig herschrijven vereist om de HttpContext afhankelijkheid te verwijderen. De adapters in dotnet-/systemweb-adapters bieden een set runtime-helpers voor toegang tot de typen die worden gebruikt in de ASP.NET Framework-app op een manier die werkt in ASP.NET Core met minimale wijzigingen.
Een volledige migratie kan veel moeite kosten, afhankelijk van de grootte van de app, afhankelijkheden en niet-draagbare API's die worden gebruikt. Als u een app wilt blijven inzetten in productie terwijl u updates uitvoert, is het beste patroon om te volgen het Strangler Fig-patroon. De Strangler Fig-patroon maakt continue ontwikkeling op het oude systeem mogelijk met een incrementele benadering om specifieke onderdelen van functionaliteit te vervangen door nieuwe services. In dit document wordt beschreven hoe u het patroon Strangler Fig toepast op een ASP.NET-app die wordt bijgewerkt naar ASP.NET Core.
Als u dit overzichtsartikel wilt overslaan en aan de slag wilt gaan, raadpleegt u Aan de slag.
App-migratie naar ASP.NET Core
Voordat de migratie wordt gestart, is de app gericht op ASP.NET Framework en wordt deze uitgevoerd in Windows met de bijbehorende ondersteunende bibliotheken:
start
Migratie begint met het introduceren van een nieuwe app op basis van ASP.NET Core dat het toegangspunt wordt. Binnenkomende aanvragen gaan naar de ASP.NET Core-app, die de aanvraag verwerkt of de aanvraag proxyt naar de .NET Framework-app via YARP-. In eerste instantie bevindt de meeste code die antwoorden biedt zich in de .NET Framework-app, maar de ASP.NET Core-app is nu ingesteld om routes te migreren:
Als u bedrijfslogica wilt migreren die afhankelijk is van HttpContext
, moeten de bibliotheken worden gebouwd met Microsoft.AspNetCore.SystemWebAdapters
. Het bouwen van de bibliotheken met SystemWebAdapters
maakt het volgende mogelijk:
- De bibliotheken die moeten worden gebouwd op basis van .NET Framework, .NET Core of .NET Standard 2.0.
- Zorgt ervoor dat de bibliotheken API's gebruiken die beschikbaar zijn in zowel ASP.NET Framework als ASP.NET Core.
Zodra de ASP.NET Core-app met YARP is ingesteld, kunt u beginnen met het bijwerken van routes van ASP.NET Framework naar ASP.NET Core. Bijvoorbeeld webAPI- of MVC-controlleractiemethoden, handlers of een andere implementatie van een route. Als de route beschikbaar is in de ASP.NET Core-app, wordt deze vergeleken en geleverd.
Tijdens het migratieproces worden aanvullende services en infrastructuur geïdentificeerd die moeten worden bijgewerkt om te worden uitgevoerd op .NET Core. Opties die worden vermeld in volgorde van onderhoud, zijn onder andere:
- De code verplaatsen naar gedeelde bibliotheken
- De code in het nieuwe project koppelen
- De code dupliceren
Uiteindelijk verwerkt de ASP.NET Core-app meer van de routes dan de .NET Framework-app:
Zodra de ASP.NET Framework-app niet meer nodig is en verwijderd:
- De app wordt uitgevoerd op de ASP.NET Core-app-stack, maar gebruikt nog steeds de adapters.
- Het resterende migratiewerk verwijdert het gebruik van adapters.
De Visual Studio-extensie .NET Upgrade Assistant kan helpen bij het upgraden van ASP.NET Framework-web-apps naar ASP.NET Core. Zie het blogbericht Uw .NET-projecten upgraden met Visual Studiovoor meer informatie.
System.Web Adapters
De Microsoft.AspNetCore.SystemWebAdapters
-naamruimte is een verzameling runtime-helpers die het gebruik van code die is geschreven op System.Web
mogelijk maken tijdens het overstappen naar ASP.NET Core. Er zijn enkele pakketten die kunnen worden gebruikt voor het gebruik van functies van deze adapters:
-
Microsoft.AspNetCore.SystemWebAdapters
: dit pakket wordt gebruikt in ondersteunende bibliotheken en biedt de System.Web-API's waarvoor u mogelijk een afhankelijkheid hebt gemaakt, zoalsHttpContext
en andere. Dit pakket is bedoeld voor .NET Standard 2.0, .NET 4.5+ en .NET 6+. -
Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
: dit pakket is alleen gericht op .NET Framework en is bedoeld om services te bieden aan ASP.NET Framework-toepassingen die mogelijk incrementele migraties moeten bieden. Over het algemeen wordt er niet naar verwacht dat er vanuit bibliotheken naar wordt verwezen, maar naar de toepassingen zelf. -
Microsoft.AspNetCore.SystemWebAdapters.CoreServices
: dit pakket is alleen gericht op .NET 6+ en is bedoeld om services te bieden aan ASP.NET Core-toepassingen voor het configureren van het gedrag vanSystem.Web
API's en voor het kiezen van gedrag voor incrementele migratie. Over het algemeen wordt er niet naar verwacht dat er vanuit bibliotheken naar wordt verwezen, maar naar de toepassingen zelf. -
Microsoft.AspNetCore.SystemWebAdapters.Abstractions
: dit pakket is een ondersteunend pakket dat abstracties biedt voor services die worden gebruikt door zowel de ASP.NET Core- als ASP.NET Framework-toepassing, zoals serialisatie van sessiestatussen.
Zie het artikel adaptersvoor voorbeelden van scenario's waarin dit nuttig is.
Zie het artikel over gebruiksrichtlijnenvoor hulp bij het gebruik.