ASP.Net アプリケーションでの依存関係の挿入に IoC コンテナー (Autofac、Ninject、Unity など) を使用する必要があるのはなぜですか?

コードを書くときは、コードを変更に適応させる SOLID Design Principles を目指します。

  • S :単一責任の原則
  • O :オープン/クローズの原則
  • L :リスコフ置換原理
  • I :インターフェースの分離
  • D :依存性注入

最初の 4 つの SOLI を達成するために、依存関係を注入します。

手動でも依存性注入 (DI) を実現できます (Poor Man's Dependency Injection) または Inversion of Control (IoC) コンテナーを使用 (Autofac、Ninject、Structure Map、Unity など) .

DI に IoC コンテナーを使用することは、速度の問題になることはありません。

Mark Seemann 氏は次のように述べています。「オブジェクト インスタンスの作成は、.Net Framework によって非常に高速に行われます。アプリケーションのパフォーマンスのボトルネックは別の場所に現れるので、心配する必要はありません。」

結論 私は個人的に、すべての ASP.Net MVC および Web API プロジェクトで IoC コンテナーを使用しています。また、IoC コンテナーを使用しないオープンソースの MVC や Web API アプリケーションはほとんど見当たりません。


DI の仕組みを理解するには、次のすばらしい記事をご覧ください:http://www.martinfowler.com/articles/injection.html

Mark Seemann によるこの本の半分でも読むことをお勧めします。 =マーク+シーマン

業績記録を樹立しようとしない限り、DI が業績に顕著な影響を与えるとは思えません。過去 1 年間、SimpleInjector を 1 日あたり数百万件のヒットを記録する Web サイトで使用しており (最も高速な Web サイトの 1 つです)、パフォーマンスへの影響はほとんど測定できません。