Udostępnij za pośrednictwem


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.

Przed rozpoczęciem migracji

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:

rozpocząć aktualizowanie 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.

Microsoft.AspNetCore.SystemWebAdapters

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ą:

  1. Przenoszenie kodu do bibliotek udostępnionych
  2. Łączenie kodu w nowym projekcie
  3. Duplikowanie kodu

Ostatecznie aplikacja ASP.NET Core obsługuje więcej tras niż aplikacja .NET Framework:

aplikacja ASP.NET Core obsługuje więcej tras

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.

final zdjęcie

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 jak HttpContext 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 API System.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.

Dodatkowe zasoby