다음을 통해 공유


System.Web 어댑터

dotnet/systemweb-adapters 리포지토리에 있는 어댑터의 주요 사용 사례는 ASP.NET Core 이동하려는 클래스 라이브러리 내의 System.Web 형식에 의존한 개발자를 돕는 것입니다.

어댑터의 중요한 기능은 어댑터를 통해 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을 어댑터로 변환할 수 있으며, 이 어댑터는 동일한 방식으로 코드를 활용하는 수준을 통해 전달될 수 있습니다.

참고 항목