Share via


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 轉換成介面卡,然後以相同方式透過使用程式碼的層級傳遞。

另請參閱