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 に正常に移行できます。 重要なのは、特定の状況に適したアプローチを選択することです。
クイック デシジョン ガイド
次の質問に答えて、アプローチを選択します。
タイムラインとリスク許容度は何ですか?
アプリケーションのサイズはどのくらいですか?
複雑な依存関係がありますか?
段階的移行
増分移行は Strangler Fig パターンの実装であり、移行を通じて運用を継続する必要がある大規模なプロジェクトまたはプロジェクトに最適です。 ASP.NET から ASP.NET Core への増分移行を開始するには、「増分移行の概要」を参照してください。
イン プレース移行
インプレース移行は、十分に小規模なアプリケーションに対して機能します。 可能であれば、これによりアプリケーションを迅速に置き換えられます。 ただし、インプレース移行を行う場合は、小さな問題が発生する可能性があります。 移行ツール のオプション については、ASP.NET MVC、Web API、Web フォームから ASP.NET Core へのアップグレードについて説明 します。
ASP.NET Core