次の方法で共有


ASP.NET から ASP.NET Core への段階的な更新

ASP.NET Framework から ASP.NET Core にアプリを更新することは、運用アプリの大半にとって簡単ではありません。 多くの場合、これらのアプリには新しいテクノロジが組み込まれており、多くの従来の決定で構成されることがよくあります。 この記事では、ASP.NET Framework アプリを ASP.NET Core に更新するためのツールに関するガイダンスとリンクを提供します。

大きな課題の 1 つは、コード ベース全体で HttpContext を広範に使用することです。 インクリメンタル アプローチとツールがないと、HttpContext の依存関係を削除するために大規模な書き換えが必要になります。 dotnet/systemweb-adapters のアダプターは、ASP.NET Framework アプリで使用される型に最小限の変更で ASP.NET Core で動作する方法でアクセスするためのランタイム ヘルパーのセットを提供します。

完全な移行には、使用されるアプリ、依存関係、および移植不可能な API のサイズによっては、かなりの労力が必要になる場合があります。 更新中にアプリを運用環境にデプロイし続けるために、最適なパターンは、Strangler Fig パターンです。 ストラングラー Fig パターン では、特定の機能を新しいサービスに置き換える増分アプローチを使用して、古いシステムでの継続的な開発を可能にします。 このドキュメントでは、ASP.NET Core に向けて更新する ASP.NET アプリにストラングラー Fig パターンを適用する方法について説明します。

この概要記事をスキップして始めたい場合は、「始める」を参照してください。

ASP.NET Core へのアプリの移行

移行を開始する前に、アプリは ASP.NET Framework を対象とし、サポート ライブラリを使用して Windows 上で実行されます。

移行 を開始する前に

移行は、エントリ ポイントとなる ASP.NET Core に基づく新しいアプリの導入から始まります。 受信要求は ASP.NET Core アプリに送られ、そこで要求を処理するか、YARP を介して.NET Framework アプリにプロキシします。 最初は、応答を提供するコードの大部分は .NET Framework アプリにありますが、ASP.NET Core アプリはルートの移行を開始するように設定されています。

ルート

HttpContextに依存するビジネス ロジックを移行するには、Microsoft.AspNetCore.SystemWebAdaptersを使用してライブラリを構築する必要があります。 SystemWebAdapters を使用してライブラリをビルドすると、次のことができます。

  • .NET Framework、.NET Core、または .NET Standard 2.0 に対してビルドするライブラリ。
  • ライブラリが、ASP.NET Framework と ASP.NET Core の両方で使用できる API を使用していることを確認します。

Microsoft.AspNetCore.SystemWebAdapters

YARP を使用する ASP.NET Core アプリが設定されたら、ASP.NET Framework から ASP.NET Core へのルートの更新を開始できます。 たとえば、WebAPI または MVC コントローラーのアクション メソッド、ハンドラー、ルートのその他の実装などです。 ルートが ASP.NET Core アプリで利用可能な場合、それが一致し、処理されます。

移行プロセス中に、.NET Core で実行するために更新する必要がある追加のサービスとインフラストラクチャが特定されます。 保守容易性の順序で一覧表示されるオプションは次のとおりです。

  1. コードを共有ライブラリに移動する
  2. 新しいプロジェクトのコードをリンクする
  3. コードを複製する

最終的に、ASP.NET Core アプリは、.NET Framework アプリよりも多くのルートを処理します。

ASP.NET Core アプリがより多くのルートを処理する

ASP.NET Framework アプリが不要になり、削除されたら、次の手順を実行します。

  • アプリは ASP.NET Core アプリ スタックで実行されていますが、まだアダプターを使用しています。
  • 残りの移行作業では、アダプターの使用を削除します。

最終的な写真する

.NET Upgrade Assistant Visual Studio 拡張機能は、ASP.NET Framework Web アプリを ASP.NET Core にアップグレードするのに役立ちます。 詳細については、Visual Studio を使用した .NET プロジェクトのアップグレードブログ記事を参照してください。

System.Web アダプター

Microsoft.AspNetCore.SystemWebAdapters 名前空間は、ASP.NET Core への移行中に System.Web に対して記述されたコードの使用を容易にするランタイム ヘルパーのコレクションです。 これらのアダプターの機能を使用するために使用できるパッケージがいくつかあります。

  • Microsoft.AspNetCore.SystemWebAdapters: このパッケージは、ライブラリのサポートに使用され、HttpContext などの依存関係を取得した可能性がある System.Web API を提供します。 このパッケージは、.NET Standard 2.0、.NET 4.5 以降、および .NET 6 以降を対象とします。
  • Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices: このパッケージは .NET Framework のみを対象としており、増分移行を提供する必要がある可能性がある ASP.NET Framework アプリケーションにサービスを提供することを目的としています。 通常、これはライブラリからではなく、アプリケーション自体から参照されることが想定されています。
  • Microsoft.AspNetCore.SystemWebAdapters.CoreServices: このパッケージは .NET 6 以降のみを対象としており、System.Web API の動作を構成したり、増分移行の動作を選択したりするために、ASP.NET Core アプリケーションにサービスを提供することを目的としています。 通常、これはライブラリからではなく、アプリケーション自体から参照されることが想定されています。
  • Microsoft.AspNetCore.SystemWebAdapters.Abstractions: このパッケージは、ASP.NET Core とセッション状態のシリアル化などの ASP.NET Framework アプリケーションの両方で使用されるサービスの抽象化を提供するサポート パッケージです。

これが役立つシナリオの例については、アダプターに関する記事 参照してください。

使用に関するガイダンスについては、の使用ガイダンスに関する記事を参照してください。

その他のリソース