Udostępnij za pośrednictwem


Karty System.Web

Głównym przypadkiem użycia kart w repozytorium dotnet/systemweb-adapters jest pomoc deweloperom, którzy polegali na System.Web typach w bibliotekach klas, ponieważ chcą przejść do ASP.NET Core.

Ważną funkcją kart jest to, że karty umożliwiają korzystanie z biblioteki zarówno z projektów ASP.NET Framework, jak i ASP.NET Core. Aktualizowanie wielu aplikacji platformy ASP.NET Framework w celu ASP.NET Core często obejmuje stany pośrednie, w których nie wszystkie aplikacje zostały w pełni zaktualizowane. Korzystając z System.Web kart, biblioteka może być używana zarówno z ASP.NET Core wywołujących, jak i ASP.NET elementów wywołujących framework, które nie zostały uaktualnione.

Przyjrzyjmy się przykładowi przy użyciu kart przechodzących z programu .NET Framework do platformy ASP.NET Core.

ASP.NET Framework

Rozważ kontroler, który wykonuje coś takiego jak:

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

która następnie ma logikę w oddzielnym zestawie przekazującym to HttpContext wokół aż do końca, niektóre metody wewnętrzne wykonuje na nim pewną logikę, taką jak:

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

ASP.NET Core

Aby można było uruchomić powyższą logikę w programie ASP.NET Core, deweloper będzie musiał dodać Microsoft.AspNetCore.SystemWebAdapters pakiet, który umożliwi pracę projektów na obu platformach.

Biblioteki należy zaktualizować, aby zrozumieć karty, ale będzie to tak proste, jak dodanie pakietu i ponowne skompilowanie. Jeśli są to jedyne zależności systemu z System.Web.dllsystemem , biblioteki będą mogły być przeznaczone dla platformy .NET Standard 2.0 , aby ułatwić prostszy proces kompilacji podczas migracji.

Kontroler w ASP.NET Core będzie teraz wyglądać następująco:

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

Zwróć uwagę, że ponieważ istnieje właściwość, mogą przejść przez tę metodę HttpContext , ale ogólnie wygląda tak samo. Korzystając z niejawnych konwersji, można przekonwertować na kartę, HttpContext która następnie może zostać przekazana przez poziomy korzystające z kodu w taki sam sposób.

Zobacz też