ASP.NET Framework から ASP.NET Core にアプリを更新することは、運用アプリの大半にとって簡単ではありません。 多くの場合、これらのアプリには新しいテクノロジが組み込まれており、多くの従来の決定で構成されることがよくあります。 このガイドでは、可能な限り少ない変更で ASP.NET Framework アプリを ASP.NET Core に更新するための実用的なアプローチとツールを提供します。
移行が困難な理由
ASP.NET Framework から ASP.NET Core への移行には、ほとんどの運用アプリケーションで完全な書き換えが困難でリスクが高い複雑な課題がいくつかあります。
技術的負債の蓄積
運用アプリケーションは、多くの場合、開発の長年にわたって技術的負債を蓄積します。
- System.Web 依存関係 - コード ベース全体で HttpContext および関連する型の広範な使用。
- 互換性のある最新の依存関係がない可能性がある古いパッケージの依存関係。
- 最新の.NETと互換性のない従来のビルド ツールとプロジェクト構成。
- 最新の代替手段に置き換える必要がある非推奨の API の使用。
- 移行を複雑にするコンパイラの警告とコード品質の問題。
横断的関心事
多くのアプリケーションには、複数のレイヤーにまたがる横断的な懸念があり、移行中に慎重な調整が必要です。
- セッション状態管理 - ASP.NET Framework と ASP.NET Coreには、基本的に異なるセッション API と動作があります。
- 認証と承認 - フレームワーク間で異なる認証モデルと API。
- ログ記録と監視 - 移行中に両方のアプリケーション間で一貫したログ記録を維持する必要があります。
- キャッシュ戦略 - インメモリ、分散、または出力のキャッシュは一貫して維持する必要があります。
- エラー処理 - 両方のアプリケーションで一貫したエラー処理パターンを確立します。
- 構成管理 - アプリケーション間で共有または同期する必要がある設定の管理。
- 依存関係の挿入 - さまざまな DI コンテナーから ASP.NET Coreの組み込みコンテナーへの移行。
汎用ホスト パターンは、最新の .NET インフラストラクチャを ASP.NET Framework アプリケーションに導入することで、これらの問題のいくつかに対処するのに役立ちます。 詳細については、 ASP.NET Framework の .NET 汎用ホストに関するページを参照してください。
ライブラリの依存関係チェーン
多くの場合、サポート ライブラリには、慎重なアップグレード順序が必要な複雑な依存関係があります。
- 依存関係ツリーの複雑さ - 後順序の深さ優先検索順序でライブラリをアップグレードする必要があります。
- マルチターゲット要件 - ライブラリは、アプリを対象とするすべてのフレームワーク バージョンをサポートする必要があります。
- API の互換性 - 移行期間中にライブラリが両方のフレームワーク バージョンで動作することを確認します。
- 複雑さのテスト - 各ライブラリのアップグレードには、互換性を確保するための徹底的なテストが必要です。
アプリケーション アーキテクチャの違い
ASP.NET Framework と ASP.NET Core の基本的な違いにより、次の課題が生じます。
- ホスティング モデル - アプリケーションのホスティングとライフサイクル管理に対するさまざまなアプローチ
- ミドルウェア パイプライン - HTTP モジュールとハンドラーからミドルウェアへの移行
- 要求処理 - さまざまな要求処理モデルとコンテキスト
- パフォーマンス特性 - さまざまなメモリ使用パターンとパフォーマンス プロファイル
これらの課題により、増分移行はほとんどの運用アプリケーションで推奨されるアプローチになります。 このアプローチにより、チームは運用環境で動作するアプリケーションを維持しながら、これらの問題に徐々に対処できます。
変更された重要な領域に関するドキュメントについては、 複雑な移行シナリオ ( 詳細領域) で利用可能な関連トピックを参照してください。
ここから始める: 移行パスを選択する
ASP.NET Framework アプリケーションを ASP.NET Coreに正常に移動できます。 重要なのは、特定の状況に適したアプローチを選択することです。
Tip
選択したパスに関係なく、GitHub Copilot アプリ モダン化エージェントは、ソリューションを評価し、アップグレード計画を生成し、移行手順の多くを自動化できます。 詳細については、「ASP.NET MVC、Web API、Web フォームから ASP.NET Coreにアップグレードする方法について説明します。
クイック デシジョン ガイド
次の質問に答えて、アプローチを選択します。
タイムラインとリスク許容度は何ですか?
アプリケーションのサイズはどのくらいですか?
複雑な依存関係がありますか?
段階的な移行
増分移行は、ストラングラーフィグパターンの一実装です。 移行を通じて引き続き運用環境に留まる必要がある大規模なプロジェクトに最適です。 アプリケーションの段階的な移行を開始するには、ASP.NET から ASP.NET Core への段階的な移行の概要を参照してください。
イン プレース移行
インプレース移行は、十分に小規模なアプリケーションに対して機能します。 可能であれば、このアプローチを使用すると、アプリケーションを迅速に置き換えられます。 ただし、インプレース移行を行う場合は、小さな問題が発生する可能性があります。 移行ツールオプションの詳細については、「ASP.NET MVC、Web API、Web フォームから ASP.NET Coreにアップグレードする方法について説明します。
ASP.NET Core