どの C#/.NET 依存性注入フレームワークを検討する価値がありますか? また、それらの複雑さと速度についてはどう思いますか。
ベストアンサー1
編集(著者によるものではありません):IoCフレームワークの包括的なリストは以下にあります。https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc:
- ウィンザー城- Castle Windsor は、.NET および Silverlight で利用できる、最高クラスの成熟した制御反転コンテナです。
- 団結- コンストラクタ、プロパティ、メソッド呼び出しの注入をサポートする軽量で拡張可能な依存性注入コンテナ
- オートファック- 中毒性のある.NET IoCコンテナ
- ドライオック- シンプルで高速、フル機能を備えた IoC コンテナー。
- ニンジェクト- .NET 依存性注入の達人
- スプリングネット- Spring.NET は、エンタープライズ .NET アプリケーションの構築を容易にするオープンソースのアプリケーション フレームワークです。
- ラマー- ASP.NET Core およびその他の .NET サーバー側アプリケーション内での使用に最適化されている高速 IoC コンテナー。
- ライトインジェクト- 超軽量のIoCコンテナ
- シンプルインジェクター- Simple Injector は、Silverlight 4+、Windows Phone 8、Windows 8 (ユニバーサル アプリと Mono を含む) をサポートする、.NET 4+ 用の使いやすい依存性注入 (DI) ライブラリです。
- Microsoft.Extensions.DependencyInjection- ASP.NET Core アプリケーションのデフォルトの IoC コンテナー。
- スクルーター- Microsoft.Extensions.DependencyInjection のアセンブリ スキャン拡張機能。
- 対MEF- Visual Studio で使用される Managed Extensibility Framework (MEF) 実装。
- 小さなIoC- 小規模なプロジェクト、ライブラリ、初心者にも適した、使いやすく手間のかからない制御の反転コンテナー。
- スタッシュボックス- .NET ベースのソリューション向けの軽量、高速、移植可能な依存性注入フレームワーク。
元の回答は以下の通りです。
少しうるさいかもしれませんが、DI (依存性注入) はプログラミング パターンであり、IoC (制御の反転) フレームワークによって促進されますが、必須ではないことに留意することが重要です。IoC フレームワークは DI をはるかに容易にし、DI 以外にもさまざまな利点を提供します。
そうは言っても、あなたが尋ねていたのはそれだと思います。IoCフレームワークについて。私は以前スプリングネットそしてキャッスルウィンザーたくさんありますが、本当に面倒だったのは、面倒なXML設定を書かなければならなかったことです。今ではほとんどすべてがこの方向に向かっているので、私は構造マップ過去 1 年ほど、IoC を強く型付けされたジェネリックとレジストリを使用した流れるような構成に移行して以来、IoC を使用する際の苦痛の障壁はゼロ以下に下がりました。IoC 構成がコンパイル時に (ほとんどの場合) チェックされることがわかって、本当にうれしく思っています。また、StructureMap とその速度には満足しています。他のものが実行時に遅いとは言いませんが、私にとってはセットアップがより難しく、フラストレーションが勝ってしまうことが多かったです。
アップデート
私は使っていますニンジェクト最新のプロジェクトで使用しましたが、本当に楽しかったです。言葉では言い表せませんが、(イギリスで言うように)このフレームワークは「犬」です。すぐに立ち上げたいグリーンフィールドプロジェクトには、ぜひお勧めします。必要なものはすべて揃っています。素晴らしいNinjectスクリーンキャストのセットジャスティン・エザーエッジ著。既存のコードにNinjectを後付けすることが問題になるとは思えないが、同じことが構造マップ私の経験では、この 2 つから選択するのは今後難しいでしょうが、停滞よりも競争があるほうがいいと思いますし、世の中には健全な競争がかなりあります。
他のIoCスクリーンキャストもご覧いただけますDimecastsではこちら。