Sdílet prostřednictvím


System.Web adapters

Hlavním případem použití adaptérů v úložišti dotnet/systemweb-adapters je pomoct vývojářům, kteří se spoléhali na System.Web typy v knihovnách tříd, když chtějí přejít na ASP.NET Core.

Důležitou funkcí adaptérů jsou adaptéry, které umožňují knihovnu používat z projektů ASP.NET Framework i ASP.NET Core. Aktualizace více aplikací ASP.NET Framework na ASP.NET Core často zahrnuje přechodné stavy, kdy nebyly všechny aplikace plně aktualizovány. Pomocí System.Web adaptérů lze knihovnu použít jak z volajících ASP.NET Core, tak z volajících rozhraní ASP.NET Framework, které nebyly upgradovány.

Podívejme se na příklad s použitím adaptérů, které se přesouvají z rozhraní .NET Framework na ASP.NET Core.

ASP.NET Framework

Vezměte v úvahu kontroler, který dělá něco jako:

public class SomeController : Controller
{
  public ActionResult Index()
  {
    SomeOtherClass.SomeMethod(HttpContext.Current);
  }
}

která pak má logiku v samostatném sestavení, které HttpContext se předává, dokud nakonec, některé vnitřní metody na něm neprovádí logiku, například:

public class Class2
{
  public bool PerformSomeCheck(HttpContext context)
  {
    return context.Request.Headers["SomeHeader"] == "ExpectedValue";
  }
}

ASP.NET Core

Aby bylo možné spustit výše uvedenou logiku v ASP.NET Core, vývojář bude muset přidat Microsoft.AspNetCore.SystemWebAdapters balíček, který umožní projektům pracovat na obou platformách.

Knihovny je potřeba aktualizovat, aby porozuměly adaptérům, ale bude to jednoduché, jako je přidání balíčku a rekompilování. Pokud jsou to jediné závislosti, které systém má System.Web.dll, pak knihovny budou moci cílit na .NET Standard 2.0 , aby usnadnily jednodušší proces sestavování při migraci.

Kontroler v ASP.NET Core teď bude vypadat takto:

public class SomeController : Controller
{
  [Route("/")]
  public IActionResult Index()
  {
    SomeOtherClass.SomeMethod(HttpContext);
  }
}

Všimněte si, že vzhledem k tomu, že existuje HttpContext vlastnost, mohou to projít, ale obvykle vypadá stejně. Pomocí implicitních převodů je možné ho HttpContext převést na adaptér, který se pak dá předat přes úrovně využívající kód stejným způsobem.

Viz také