Przyrostowe ASP.NET do aktualizacji ASP.NET Core
Aktualizowanie aplikacji z platformy ASP.NET Framework do platformy ASP.NET Core nie jest proste dla większości aplikacji produkcyjnych. Te aplikacje często zawierają nowe technologie, ponieważ stają się dostępne i często składają się z wielu starszych decyzji. Ten artykuł zawiera wskazówki i linki do narzędzi do aktualizowania aplikacji platformy ASP.NET Framework w celu ASP.NET Core z jak najmniejszymi zmianami.
Jednym z większych wyzwań jest wszechobecne wykorzystanie HttpContext całej bazy kodu. Bez podejścia przyrostowego i narzędzi wymagane jest ponowne zapisywanie na dużą skalę w celu usunięcia HttpContext zależności. Karty w dotnet/systemweb-adaptery zapewniają zestaw pomocników środowiska uruchomieniowego w celu uzyskania dostępu do typów używanych w aplikacji ASP.NET Framework w sposób, który działa w ASP.NET Core z minimalnymi zmianami.
Pełna migracja może wymagać znacznego nakładu pracy w zależności od rozmiaru aplikacji, zależności i używanych nie przenośnych interfejsów API. Aby nadal wdrażać aplikację w środowisku produkcyjnym podczas pracy nad aktualizowaniem, najlepszym wzorcem jest wzorzec Fig stranglera. Wzorzec strangler figowy umożliwia ciągłe opracowywanie starego systemu przy użyciu przyrostowego podejścia do zastępowania określonych elementów funkcjonalności nowymi usługami. W tym dokumencie opisano sposób stosowania wzorca figowego stranglera do aplikacji ASP.NET aktualizowania w kierunku ASP.NET Core.
Jeśli chcesz pominąć ten artykuł z omówieniem i rozpocząć pracę, zobacz Wprowadzenie.
Migracja aplikacji do ASP.NET Core
Przed rozpoczęciem migracji aplikacja jest przeznaczona ASP.NET Framework i działa w systemie Windows z jej bibliotekami pomocniczymi:
Migracja rozpoczyna się od wprowadzenia nowej aplikacji na podstawie ASP.NET Core, która staje się punktem wejścia. Żądania przychodzące przechodzą do aplikacji ASP.NET Core, która obsługuje żądanie lub serwer proxy żądania do aplikacji .NET Framework za pośrednictwem yaRP. Na początku większość kodu dostarczającego odpowiedzi znajduje się w aplikacji .NET Framework, ale aplikacja ASP.NET Core jest teraz skonfigurowana w celu rozpoczęcia migracji tras:
Aby przeprowadzić migrację logiki biznesowej opartej na HttpContext
systemie , należy skompilować biblioteki za pomocą Microsoft.AspNetCore.SystemWebAdapters
polecenia . Kompilowanie bibliotek za pomocą SystemWebAdapters
polecenia umożliwia:
- Biblioteki do skompilowania na platformie .NET Framework, .NET Core lub .NET Standard 2.0.
- Gwarantuje, że biblioteki korzystają z interfejsów API, które są dostępne zarówno w programie ASP.NET Framework, jak i ASP.NET Core.
Po skonfigurowaniu aplikacji ASP.NET Core przy użyciu protokołu YARP możesz rozpocząć aktualizowanie tras z platformy ASP.NET Framework do ASP.NET Core. Na przykład metody akcji kontrolera WebAPI lub MVC, procedury obsługi lub inna implementacja trasy. Jeśli trasa jest dostępna w aplikacji ASP.NET Core, jest zgodna i obsługiwana.
Podczas procesu migracji zidentyfikowano dodatkowe usługi i infrastrukturę, które należy zaktualizować, aby można je było uruchomić na platformie .NET Core. Opcje wymienione w kolejności konserwacji obejmują:
- Przenoszenie kodu do bibliotek udostępnionych
- Łączenie kodu w nowym projekcie
- Duplikowanie kodu
Ostatecznie aplikacja ASP.NET Core obsługuje więcej tras niż aplikacja .NET Framework:
Gdy aplikacja platformy ASP.NET Framework nie będzie już potrzebna i usunięta:
- Aplikacja jest uruchomiona na stosie aplikacji ASP.NET Core, ale nadal korzysta z kart.
- Pozostała praca migracji polega na usunięciu użycia kart.
Rozszerzenie programu Visual Studio .NET Upgrade Assistant może pomóc w uaktualnieniu aplikacji internetowych platformy ASP.NET Framework do platformy ASP.NET Core. Aby uzyskać więcej informacji, zobacz wpis w blogu Uaktualnianie projektów .NET przy użyciu programu Visual Studio.
Adaptery System.Web
Microsoft.AspNetCore.SystemWebAdapters
Przestrzeń nazw to kolekcja pomocników środowiska uruchomieniowego, które ułatwiają korzystanie z kodu napisanego System.Web
podczas przechodzenia do platformy ASP.NET Core. Istnieje kilka pakietów, które mogą służyć do korzystania z funkcji z tych kart:
Microsoft.AspNetCore.SystemWebAdapters
: Ten pakiet jest używany w bibliotekach pomocniczych i udostępnia interfejsy API System.Web, z których mogły być zależne, takie jakHttpContext
i inne. Ten pakiet jest przeznaczony dla platformy .NET Standard 2.0, .NET 4.5+i .NET 6+.Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
: Ten pakiet jest przeznaczony tylko dla platformy .NET Framework i ma na celu świadczenie usług dla aplikacji ASP.NET Framework, które mogą wymagać zapewnienia migracji przyrostowych. Zwykle nie należy się do niego odwoływać z bibliotek, ale raczej z samych aplikacji.Microsoft.AspNetCore.SystemWebAdapters.CoreServices
: Ten pakiet jest przeznaczony tylko dla platformy .NET 6+ i ma na celu świadczenie usług w celu ASP.NET aplikacji Core w celu skonfigurowania zachowaniaSystem.Web
interfejsów API, a także wybrania wszelkich zachowań migracji przyrostowej. Zwykle nie należy się do niego odwoływać z bibliotek, ale raczej z samych aplikacji.Microsoft.AspNetCore.SystemWebAdapters.Abstractions
: Ten pakiet jest pakietem pomocniczym, który udostępnia abstrakcje dla usług używanych zarówno przez aplikację ASP.NET Core, jak i ASP.NET Framework, taką jak serializacja stanu sesji.
Przykłady scenariuszy, w których jest to przydatne, zobacz artykuł adaptery.
Aby uzyskać wskazówki dotyczące użycia, zobacz artykuł ze wskazówkami dotyczącymi użycia.