この分野の初心者にどの Inversion of Control Container フレームワークをお勧めしますか?
9 に答える
James Kovacs は、独自の IOC コンテナーを作成する方法を示すdnrtvスクリーンキャストを行いました。初心者にこれをお勧めするのは、必ずしも使いたいからではなく、なぜ IOC コンテナーが必要なのか、基本的な機能が何であるかの基本を示しているからです。この後、 Castle WindsorまたはStructure Mapに移動してみてください。
軽量、シンプル、高速、C# 3.0 指向であり、(私にとって) 他のどの IoC コンテナー (Windsor でさえも) よりも複雑なプロジェクトでうまく機能します。
主な機能:
- コンポーネントの決定論的処分
- 式ベースの構成
- マルチスコープのコンポーネント解決の適切なサポート
- ハイパフォーマンス
- 無駄のないコードベース
Castle's Windsor のBitterCoder からいくつかの本当に簡単なチュートリアルがあったことを思い出します。
Windsor を使用するかどうかを決定したとしても、これらのウォークスルーは、他のコンテナーに期待される特徴/機能の種類についての良いアイデアを提供するはずです。
- パート 1 -簡単な設定
- パート 2 -その他の構成 (アレイ)
- パート 3 -さらに多くの構成 (辞書)
- パート 4 -スイッチング構成
- パート 5 -構成パラメーター
- パート 6 -ライフスタイルの切り替え
- パート 7 -スイッチングの実装
- パート 8 -キーによる実装の参照
- パート 9 -コンストラクター インジェクション
- パート 10 -セッター注入
- パート 11 -工場
- パート 12 -デコレータ
- パート 13 -サービス配列の注入
- パート 14 -起動可能な施設
MarkSeemannによるDependencyInjectionIn.Netという素晴らしい本があります。本の後半では、6つの人気のあるフレームワークについて、それらの感触をつかむのに十分な詳細を説明しています。新しい人が決めるのを助けるのは一見の価値があります。彼はまた、コンテナーを試す準備ができていないが、少なくともIoCコンテナーを使用するように簡単に変換できる方法でアプリケーションを作成したいという貧乏人の依存性注入についても説明しています。
彼がカバーするコンテナは次のとおりです。
- キャッスルウィンザー
- StructureMap
- Spring.Net
- Autofac
- 団結
- MEF(MEFは正確にはIoCコンテナではないと彼は言っていると思いますが)
Ninjectはこれらの質問で多くの支持を得ているようです
Danial Cazzulinoには、 Funq DIコンテナの作成に関する多数のスクリーンキャスト(スクランチ?)があります。Funqは軽量で高速ですが、より大きく、より確立されたフレームワークのいくつかの機能が欠けています。
Funqから派生したMunqを使用します。これは、軽量で高速であり、Nugetを介してMVC3プロジェクトにDIコンテナーを追加する簡単な方法です。これまで、別のフレームワークに移行する必要はありませんでした。Munqは非常に適切でした。
私はdpに同意します。そのスクリーンキャストの作者は、あなたがあなたを転がすべきだとさえ言っています。これは、それらがどのように機能するかを理解できるようにするためです。次に、それを理解したら、よりフル機能の機能に移ることができます。
また、「それらすべてを支配する1つのIOCコンテナ」は実際には存在しないことも言及されています。これは、ほとんどすべてが同じ機能を備えているためです。それはあなたがどちらの実装を好むかにかかっています。たとえば、Enterprise Library Frameworkを頻繁に使用している場合は、EntLibの残りの部分との無料のタイアップが得られるため、Unityコンテナーを好む可能性があります。または、XMLにアレルギーがある場合は、非常に流暢なインターフェイスを持つNinjectを使用できます。それぞれのフレームワークには長所と短所がありますが、初心者の観点からはほとんど同じです。
Spring.NET ポートの評価を行いました。AOP、コンテナーの構成ファイルのセットアップ、およびその他の優れた機能を提供します。彼らのサイトはよく整理されており、ドキュメントはよく書かれていると思います。
ストラクチャーマップと言います。これは、より成熟したフレームワークの 1 つであり、非常に使いやすいです。さらに、NMock とうまく統合して、単体テストに非常に役立つモック オブジェクトを作成できます。Microsoft がサポートするフレームワークは Unity ですので、それも参照してください。