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 フレームワーク

次のような処理を行うコントローラーを検討してください。

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 をアダプターに変換し、同じ方法でコードを活用したレベルを通じて渡すことができます。

関連項目