Przyrostowa aktualizacja z ASP.NET do 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 integrują nowe technologie, gdy stają się one dostępne, i często składają się z wielu dziedziczonych decyzji. Ten artykuł zawiera wskazówki i linki do narzędzi ułatwiających aktualizację aplikacji z ASP.NET Framework na ASP.NET Core z minimalnymi zmianami.
Jednym z większych wyzwań jest wszechobecne użycie HttpContext w całej bazie kodu. Bez podejścia przyrostowego i narzędzi wymagane jest ponowne zapisywanie na dużą skalę w celu usunięcia zależności HttpContext. Adaptery w dotnet/systemweb-adapters zapewniają zestaw pomocników runtime do 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 kontynuować wdrażanie aplikacji do środowiska produkcyjnego podczas pracy nad aktualizacją, najlepiej jest stosować wzorzec Strangler Fig . Wzorzec Strangler Fig pozwala na ciągły rozwój starego systemu przy użyciu przyrostowego podejścia do zastępowania określonych elementów funkcjonalności nowymi usługami. W tym dokumencie opisano, jak zastosować wzorzec Strangler Fig do aktualizacji aplikacji ASP.NET do wersji 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 dla platformy ASP.NET Framework i działa w systemie Windows z bibliotekami pomocniczymi.
Migracja rozpoczyna się od wprowadzenia nowej aplikacji na podstawie ASP.NET Core, która staje się punktem wejścia. Żądania przychodzące trafiają do aplikacji ASP.NET Core, która obsługuje je lub przekazuje 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
, biblioteki należy skompilować przy użyciu Microsoft.AspNetCore.SystemWebAdapters
. Kompilowanie bibliotek przy użyciu SystemWebAdapters
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, handlery czy też inne implementacje trasy. Jeśli trasa jest dostępna w aplikacji ASP.NET Core, jest dopasowana i przetwarzana.
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 działa na stosie aplikacji ASP.NET Core, ale nadal korzysta z adapterów.
- Pozostała praca migracyjna polega na usunięciu użycia adapterów.
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 platformy .NET przy użyciu programu Visual Studio.
Adaptery System.Web
Przestrzeń nazw Microsoft.AspNetCore.SystemWebAdapters
to kolekcja pomocników środowiska uruchomieniowego, które ułatwiają używanie kodu napisanego względem System.Web
podczas przechodzenia do ASP.NET Core. Istnieje kilka pakietów, które mogą służyć do korzystania z funkcji tych adapterów.
-
Microsoft.AspNetCore.SystemWebAdapters
: Ten pakiet jest używany w bibliotekach pomocniczych i udostępnia interfejsy API System.Web, na których możesz polegać, 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 platformy 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 współpracę z aplikacjami ASP.NET Core w celu skonfigurowania zachowania interfejsów APISystem.Web
, a także umożliwienie wszelkich zachowań związanych z migracją przyrostową. 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 ASP.NET Core, jak i aplikację platformy ASP.NET Framework, taką jak serializacja stanu sesji.
Przykłady scenariuszy, w których jest to przydatne, znajdują się w artykule adaptery .
Aby uzyskać wskazówki dotyczące użycia, zobacz artykuł dotyczący wskazówek użycia.