Адаптеры System.Web
Основной вариант использования адаптеров в репозитории dotnet/systemweb-adapters — помочь разработчикам, которые System.Web
использовали типы в своих библиотеках классов, так как они хотят перейти к ASP.NET Core.
Важной особенностью адаптеров является адаптеры, позволяющие использовать библиотеку как из ASP платформа .NET Framework, так и ASP.NET core проектов. Обновление нескольких приложений ASP платформа .NET Framework до ASP.NET Core часто включает промежуточные состояния, в которых не все приложения были полностью обновлены. С помощью System.Web
адаптеров библиотеку можно использовать как из вызывающих ASP.NET Core, так и от вызывающих средств ASP платформа .NET Framework, которые не были обновлены.
Рассмотрим пример использования адаптеров, переходящих от платформа .NET Framework к ASP.NET Core.
ASP.NET Framework
Рассмотрим контроллер, который выполняет такие действия, как:
public class SomeController : Controller
{
public ActionResult Index()
{
SomeOtherClass.SomeMethod(HttpContext.Current);
}
}
то есть логика в отдельной сборке, передаваемой до HttpContext конца, некоторый внутренний метод выполняет в нем некоторую логику, например:
public class Class2
{
public bool PerformSomeCheck(HttpContext context)
{
return context.Request.Headers["SomeHeader"] == "ExpectedValue";
}
}
ASP.NET Core
Чтобы запустить приведенную выше логику в ASP.NET Core, разработчику потребуется добавить Microsoft.AspNetCore.SystemWebAdapters
пакет, который позволит проектам работать на обеих платформах.
Библиотеки должны быть обновлены для понимания адаптеров, но это будет так же просто, как добавление пакета и перекомпиляции. Если это единственная зависимость системы System.Web.dll
, то библиотеки смогут нацелиться на .NET Standard 2.0 , чтобы упростить процесс сборки при миграции.
Теперь контроллер в ASP.NET Core будет выглядеть следующим образом:
public class SomeController : Controller
{
[Route("/")]
public IActionResult Index()
{
SomeOtherClass.SomeMethod(HttpContext);
}
}
Обратите внимание, что так как есть HttpContext свойство, они могут пройти это через, но в целом это выглядит так же. С помощью неявных преобразований можно преобразовать в адаптер, который затем можно передать через уровни HttpContext , использующие код таким же образом.
См. также
ASP.NET Core