-
09-09-2019 - |
質問
IoCコンテナとは何ですか?
IoC/DI フレームワークとは何ですか?
なぜ IoC/DI のフレームワークが必要なのでしょうか?
IoC/DI と AOP の間には関係がありますか?
IoC および AOP に関して Spring.net/ninject とは何ですか?
解決
JMSA、
James Kovacs があなたの質問の多くをカバーする素晴らしい記事を書きました。一読をお勧めします ここ
Spring.Net、Ninject、Unity、Castle Windsor、Autofac はすべて、さまざまな方法で構成可能な IOC コンテナであり、その多くは AOP もサポートしています。
IOC/DI のフレームワークは、標準メカニズムを提供するため便利です。たとえば、新しい開発者を雇用する場合、このフレームワークを使用してチュートリアル/ヘルプ ガイドへのリンクを渡すと言うのははるかに簡単です。同時に、これらのフレームワークは大規模なコミュニティや企業によって試行され、テストされています。
記事と上記の回答を読んだ後でも不明な点がある場合はお知らせください。さらにサポートできるよう最善を尽くします。
他のヒント
ビューのセマンティクスの観点から...
依存性の注入自体がの構築/使用のためのが必要です何か(アプリケーションの "コアの懸念")、すなわち、の依存関係の意味します。例えば、車車はエンジンがないわけではない。
態様は、アプリケーションのコアの懸念に横断的であると記載されています。それは(あなたは「素敵なツー持てる者」と考えることができ)コアの懸念へのとは別の非決定的なの両方を意味します。アプリケーションは、側面なしで実行することができますので、彼らは本当に依存関係がありますか?例えば、自動車でもイモビライザーなしまだ車です。
(もちろん、これは理論的な観点からである。現実の世界では、セキュリティなどの問題は、多くの場合、コアが自分自身を懸念として、有価物の存在として重要である。)
実際のDIに側面を実装するために使用することができ、一方でそれを、私はその過程真DI呼び出すことはありません。これは、排他的にコンストラクタ・インジェクションを使用して誰かから来てます。
Martin Fowler氏は、ここではの制御の反転の意味で良い記事を持っており、依存性の注入ます。
Spring.NET使用AOPが詳細に記載されているここ。私は春のJavaベースのバージョンをよりよく知っているので、私はSpring.NETは現在、唯一のプロキシベースのAOPをサポートしていることを絶対に確信を持って言うことができません。
つまり、助言するクラスは、インターフェイスを実装する必要があります。スプリングは、元のターゲット・インスタンスにこのインターフェイスとデリゲートを実装する動的プロキシを作成します。
それがないものの状態:
将来のリリースでは、同様のインタフェースなしでプロキシクラスにあなたを可能にし、構成ベースのプロキシを使用して解決することはできません残りの生の参照の問題のいくつかを削除します継承を使用して、プロキシを実装します。