[解決済み] どの.NET Dependency Injectionフレームワークが調べる価値がありますか?[クローズド]
質問
どのC#/.NET Dependency Injectionフレームワークに注目する価値がありますか? また、その複雑さとスピードについて何か言うことはできますか。
どのように解決するのですか?
編集 (筆者によるものではありません)。IoCフレームワークの包括的なリストは、以下のサイトにあります。 https://github.com/quozd/awesome-dotnet/blob/master/README.md#ioc :
- ウィンザー城 - Windsorは、.NETとSilverlightで利用可能な成熟したInversion of Controlコンテナのベスト・オブ・ブリードです。
- ユニティ - 軽量で拡張性の高い依存性注入コンテナ。コンストラクタ、プロパティ、メソッド呼び出しの注入をサポート。
- オートファック - やみつきになる.NET IoCコンテナ
- ドライイオク - シンプルで高速な、すべての機能を備えたIoCコンテナです。
- ニンジェクト - .NET依存性インジェクタの忍者
- Spring.Net - Spring.NETは、エンタープライズ.NETアプリケーションの構築を容易にする、オープンソースのアプリケーションフレームワークです。
- ラマ - ASP.NET Coreやその他の.NETサーバーサイドアプリケーションで使用するために最適化された高速IoCコンテナです。
- ライトインジェクション - 超軽量なIoCコンテナ
- 簡易インジェクタ - Simple Injectorは、Silverlight 4+、Windows Phone 8、Windows 8(ユニバーサルアプリを含む)、Monoをサポートする、.NET 4+用の使いやすい依存性注入(DI)ライブラリです。
- マイクロソフト.エクステンション.ディペンデンシーインジェクション - ASP.NET CoreアプリケーションのデフォルトのIoCコンテナです。
- スクリプター - Microsoft.Extensions.DependencyInjectionのためのアセンブリスキャン拡張。
- VS MEF - Visual Studio で使用される MEF (Managed Extensibility Framework) の実装です。
- タイニーIoC - 小規模なプロジェクトやライブラリ、初心者でも簡単に使える、手間のかからないInversion of Controlコンテナです。
- スタッシュボックス - .NETベースのソリューションのための、軽量、高速、ポータブルな依存性注入フレームワークです。
オリジナルの回答は以下の通りです。
しかし、DI(Dependency Injection)はプログラミングパターンのひとつであり、IoC(Inversion of Control)フレームワークによって促進されますが、必要なわけではありません。IoCフレームワークは、DIをより簡単にし、DI以上に多くの利点を提供するものです。
そう言われてみれば、そういうご質問もありましたね。IoCフレームワークについて;以前は スプリングネット と キャッスルウインザー しかし、本当に面倒だったのは、XMLの設定を書かなければならなかったことです。今はほとんどこの方法に移行しているので、私は 構造マップ この 1 年ほどで、強く型付けされたジェネリックとレジストリを使った流暢なコンフィグに移行したので、IoC を使う上での苦痛の障壁はゼロ以下になりました! IoC の設定はコンパイル時にチェックされますし、StructureMap とその速度には喜びしか感じません。他のものが実行時に遅いとは言いませんが、セットアップがより困難で、しばしばフラストレーションが勝りました。
更新情報
今まで使っていた ニンジェクター 私の最新のプロジェクトで、この製品を使用するのは本当に楽しいことです。ここではちょっと言葉が足りませんが、(イギリスで言うところの)このフレームワークは「ザ・ドッグス」なのです。素早く立ち上げたいグリーン・フィールド・プロジェクトには、ぜひお勧めしたいです。私は、必要なものをすべて Ninjectのスクリーンキャストのファンタスティックセット Justin Etheredgeによるものです。既存のコードにNinjectを後付けすることは全く問題ないように思えるが、同じことが 構造マップ 私の経験では この2つのどちらを選ぶかは難しいところですが、停滞するよりは競争があったほうがいいと思いますし、健全な競争はちゃんとありますよ。
その他のIoCスクリーンキャストもご覧いただけます。 Dimecastsではこちら .
関連
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] .NETでC#オブジェクトをJSON文字列に変換するには?
-
[解決済み] Inversion of ControlとDependency Injectionの比較
-
[解決済み] なぜ依存性注入を使用するのですか?
-
[解決済み] Dependency Injectionのコンストラクタの狂気を回避する方法とは?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】スクリプトクラスが見つからないので、スクリプトコンポーネントを追加できない?
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み] 関数を終了するには?
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み】C#の主要なDI/IoCフレームワークの比較はどうなっていますか?[終了しました]