Sdílet prostřednictvím


Přírůstkové ASP.NET pro aktualizaci ASP.NET Core

Aktualizace aplikace z ASP.NET Framework na ASP.NET Core není pro většinu produkčních aplikací triviální. Tyto aplikace často zahrnují nové technologie, jakmile budou dostupné a často se skládají z mnoha starších rozhodnutí. Tento článek obsahuje pokyny a odkazy na nástroje pro aktualizaci aplikací ASP.NET Framework na ASP.NET Core s co nejmenšími změnami.

Jednou z větších výzev je trvalá použití HttpContext v celém základu kódu. Bez přírůstkového přístupu a nástrojů se k odebrání HttpContext závislosti vyžaduje rozsáhlé přepsání. Adaptéry v adaptérech dotnet/systemweb-adapter poskytují sadu pomocných rutin modulu runtime pro přístup k typům používaným v aplikaci ASP.NET Framework způsobem, který funguje v ASP.NET Core s minimálními změnami.

Úplná migrace může trvat značné úsilí v závislosti na velikosti používané aplikace, závislostí a nepřenosných rozhraní API. Aby se při aktualizaci stále nasazoval aplikace do produkčního prostředí, je nejlepší postupovat podle vzoru Strangler Fig. Model Strangler Fig umožňuje nepřetržitý vývoj ve starém systému s přírůstkovým přístupem k nahrazení konkrétních částí funkčnosti novými službami. Tento dokument popisuje, jak použít model Strangler Fig na aplikaci ASP.NET, která se aktualizuje směrem k ASP.NET Core.

Pokud chcete tento článek s přehledem přeskočit a začít, přečtěte si téma Začínáme.

Migrace aplikací na ASP.NET Core

Před zahájením migrace cílí aplikace na rozhraní ASP.NET Framework a běží ve Windows s podpůrnými knihovnami:

Before starting the migration

Migrace začíná zavedením nové aplikace založené na ASP.NET Core, která se stane vstupním bodem. Příchozí požadavky se přejdou do aplikace ASP.NET Core, která požadavek zpracuje nebo proxy server odešle do aplikace .NET Framework prostřednictvím YARP. Většina kódu poskytující odpovědi je zpočátku v aplikaci .NET Framework, ale aplikace ASP.NET Core je teď nastavená tak, aby začala migrovat trasy:

start updating routes

Pokud chcete migrovat obchodní logiku, která závisí na HttpContexttom , musí být knihovny sestaveny pomocí Microsoft.AspNetCore.SystemWebAdapters. Vytváření knihoven pomocí SystemWebAdapters následujících:

  • Knihovny, které se mají sestavit pro rozhraní .NET Framework, .NET Core nebo .NET Standard 2.0.
  • Zajišťuje, aby knihovny používaly rozhraní API, která jsou k dispozici v ASP.NET Frameworku i ASP.NET Core.

Microsoft.AspNetCore.SystemWebAdapters

Jakmile je aplikace ASP.NET Core pomocí YARP nastavená, můžete začít aktualizovat trasy z ASP.NET Framework na ASP.NET Core. Například metody akcí kontroleru WebAPI nebo MVC, obslužné rutiny nebo jiná implementace trasy. Pokud je trasa dostupná v aplikaci ASP.NET Core, odpovídá a obsluhuje se.

Během procesu migrace jsou identifikovány další služby a infrastruktura, které je potřeba aktualizovat, aby běžely v .NET Core. Možnosti uvedené v pořadí udržovatelnosti zahrnují:

  1. Přesunutí kódu do sdílených knihoven
  2. Propojení kódu v novém projektu
  3. Duplikování kódu

Aplikace ASP.NET Core nakonec zpracovává více tras než aplikace .NET Framework:

the ASP.NET Core app handles more of the routes

Jakmile už aplikace ASP.NET Framework není potřebná a odstraněná:

  • Aplikace běží v zásobníku aplikací ASP.NET Core, ale stále používá adaptéry.
  • Zbývající práce migrace odebírá použití adaptérů.

final pic

Pomocník s upgradem sady Visual Studio pro .NET může pomoct s upgradem webových aplikací ASP.NET Framework na ASP.NET Core. Další informace najdete v blogovém příspěvku Upgrade projektů .NET pomocí sady Visual Studio.

System.Web Adapters

Obor Microsoft.AspNetCore.SystemWebAdapters názvů je kolekce pomocných rutin modulu runtime, které usnadňují používání kódu napsaného při System.Web přechodu na ASP.NET Core. Existuje několik balíčků, které se dají použít k používání funkcí z těchto adaptérů:

  • Microsoft.AspNetCore.SystemWebAdapters: Tento balíček se používá v podpůrných knihovnách a poskytuje rozhraní System.Web API, na kterých jste mohli záviset, jako HttpContext jsou a další. Tento balíček cílí na .NET Standard 2.0, .NET 4.5 nebo novější a .NET 6 nebo novější.
  • Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices: Tento balíček cílí pouze na rozhraní .NET Framework a je určen k poskytování služeb aplikacím ASP.NET Framework, které mohou potřebovat poskytovat přírůstkové migrace. Obecně se neočekává, že se na ně odkazuje z knihoven, ale spíše z samotných aplikací.
  • Microsoft.AspNetCore.SystemWebAdapters.CoreServices: Tento balíček cílí pouze na .NET 6 nebo novější a je určený k poskytování služeb pro ASP.NET core aplikací, aby nakonfigurovali chování System.Web rozhraní API a přihlásili se k jakémukoli chování přírůstkové migrace. Obecně se neočekává, že se na ně odkazuje z knihoven, ale spíše z samotných aplikací.
  • Microsoft.AspNetCore.SystemWebAdapters.Abstractions: Tento balíček je podpůrný balíček, který poskytuje abstrakce pro služby používané aplikací ASP.NET Core i ASP.NET Framework, jako je serializace stavu relace.

Příklady scénářů, ve kterých je to užitečné, najdete v článku adaptéry.

Pokyny k používání najdete v článku s pokyny k používání.

Další zdroje informací