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.dll
systemem , 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.