ASP.NET MVC と ASP.NET Core での依存関係の挿入の相違点

ヒント

このコンテンツは eBook の「.NET 6 への既存の ASP.NET アプリの移植」からの抜粋です。これは .NET Docs で閲覧できます。PDF として無料ダウンロードすると、オフラインで閲覧できます。

eBook の「.NET 6 への既存の ASP.NET アプリの移植」のカバー サムネイル。

依存関係の挿入 (DI) は ASP.NET MVC にも Web API にも組み込まれていませんが、多くのアプリでは、制御の反転 (IOC) コンテナーを含む NuGet パッケージを追加することでこれを実現します。 これらは DI コンテナーと呼ばれることもあります。DI は、依存関係の挿入 (または反転) を意味します。 ASP.NET MVC アプリで使用される最も一般的なコンテナーとして、次のものがあります。

ASP.NET MVC アプリで DI を使用していない場合は、ASP.NET Core に組み込まれている DI のサポートについて調べることをお勧めします。 DI により、アプリ内のモジュールの疎結合が促進され、テストの容易性と、堅牢性などの原則への準拠が向上します。

アプリで DI を使用している場合は、使用中のコンテナーで ASP.NET Core がサポートされているかどうかを確認するのが最善の方法でしょう。 サポートされていれば、型のマッピングと有効期間を記述したカスタム構成規則と共にそれを引き続き使用できます。

いずれの場合も、ASP.NET Core に付属している組み込みの DI のサポートでアプリのニーズを満たせる可能性があるため、その使用を検討する必要があります。

ASP.NET Core での依存関係の挿入

ASP.NET Core は、アプリで DI を使用することを前提としています。 これはフレームワークに組み込まれているだけでなく、ASP.NET Core アプリにフレームワークの機能のサポートを導入するために必要です。 アプリの起動時に、Web ホスト ビルダーの builder.Services プロパティを使用してサービスを構成するための呼び出しが行われます。 このプロパティは、アプリケーションの DI コンテナー (サービス コレクション/サービス プロバイダー) で機能し、アプリ内にサービスの依存関係を作成および挿入するために使用されます。 Entity Framework Core、Identity、MVC などの組み込みの ASP.NET Core 機能は、アプリケーションの起動時にサービスとして構成することでアプリに導入されます。

既定の実装の使用に加えて、アプリでカスタム コンテナーを使用することも可能です。 既定のサービス コンテナーを置き換える方法については、ドキュメントを参照してください

DI は ASP.NET Core の基盤となるものです。 チームがその実践に精通していない場合は、アプリを移植する前に理解しておくことをお勧めします。

リファレンス