Číst v angličtině

Sdílet prostřednictvím


Postupná aktualizace ASP.NET na 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 přetrvávající použití HttpContext v rámci kódové základny. Bez přírůstkového přístupu a nástrojů je pro odebrání závislosti HttpContext nutné rozsáhlé přepsání. Adaptéry v dotnet/systemweb-adapters 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 bylo možné při aktualizaci aplikaci stále nasazovat do produkčního prostředí, je nejlepší dodržovat vzor 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 přeskočit tento přehledový článek a začít, podívejte se na 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:

Před zahájením migrace

Migrace začíná zavedením nové aplikace založené na ASP.NET Core, která se stane vstupním bodem. Příchozí požadavky směřují do aplikace ASP.NET Core, která buď zpracovává požadavek, nebo posílá požadavek jako proxy 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:

zahájení aktualizace tras

Pokud chcete migrovat obchodní logiku, která závisí na HttpContext, je potřeba vytvářet knihovny pomocí Microsoft.AspNetCore.SystemWebAdapters. Vytváření knihoven pomocí SystemWebAdapters umožňuje:

  • 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, je přiřazena a zpracována.

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:

aplikace ASP.NET Core zpracovává více tras

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 na migraci spočívá v odstranění používání adaptérů.

konečný obrázek

Rozšíření Visual Studio .NET Upgrade Assistant pomáhá 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 názvů Microsoft.AspNetCore.SystemWebAdapters je kolekce pomocných rutin modulu runtime, které usnadňují používání kódu napsaného proti System.Web při 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, například HttpContext 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 aplikace, aby nakonfigurovala chování rozhraní API System.Web a umožnila zapnout jakékoli chování pro přírůstkovou migraci. 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.

Jako příklady scénářů, ve kterých je to užitečné, vizte článek o adaptérech .

Pokyny k použití naleznete v článku .

Další zdroje informací