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:

Before starting the migration

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:

start updating routes

Aby przeprowadzić migrację logiki biznesowej opartej na HttpContextsystemie , należy skompilować biblioteki za pomocą Microsoft.AspNetCore.SystemWebAdapterspolecenia . 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.

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

  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:

the ASP.NET Core app handles more of the routes

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.

final pic

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 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 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 zachowania System.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.

Dodatkowe zasoby