11

IoCコンテナとは何ですか?IoC、AOPなど

IoC/DIフレームワークとは何ですか?

IoC/DIのフレームワークが必要なのはなぜですか?

IoC/DIとAOPの関係はありますか?

IoCとAOPに関してSpring.net/ninjectとは何ですか?

+0

もチェックしてください:http://stackoverflow.com/questions/15675331/difference-between-spring-ioc-and-spring-aop – NoNaMe

答えて

4

JMSA、

ジェームズ・コバチは、あなたの質問の多くをカバーして幻想的な記事を書いた私はそれをHere

Spring.Net、Ninject、ユニティ、城ウィンザー、AutofacがあるすべてのIOCコンテナですを読んで推薦しますさまざまな方法で設定可能ですが、その多くはAOPもサポートしています。

IOC/DIのフレームワークは標準的なメカニズムを提供するので便利です。たとえば、新しい開発者を採用する場合、このフレームワークを使用してチュートリアル/ヘルプガイドへのリンクを渡す方がはるかに簡単です。同時に、これらのフレームワークは大規模なコミュニティ/企業によって試行され、テストされます。

この記事を読んだ後、あなたの質問に答えが残っていないかどうかを教えてください。上記の回答があれば、私はさらに援助を提供するために最善を尽くします。

+0

Thanks Peter!本当に助けになりました! –

+0

IoC/DIとAOPの関係はありますか? –

+0

そこにはある程度の関係がある。 AOPを調べると、ほとんどの場合、ロギングやクロスカッティングのセキュリティの許可のスタイルなどが適用されます。 ロギングの場合、多くの開発者がDI/IOCとともにロギングプロバイダを切り替えることができます(たとえば、swap log4netをエンタープライズライブラリのロギングに切り替える)。 本当の答えは、AOPを実装するためにDIまたはIoCを必要とせず、DIまたはIoCを実装するためにAOPを使用する必要がないということです。 – Peter

2

Martin FowlerはInversion of ControlとDependency Injectionの意味で良い記事hereを持っています。

Spring.NETの使用方法AOPについては、hereで詳しく説明しています。私はSpringのJavaベースのバージョンに精通しているので、Spring.NETは現在のところ、プロキシベースのAOPしかサポートしていないということは絶対に確信できません。

つまり、勧告されるクラスはインタフェースを実装する必要があります。 Springは、このインタフェースを実装し、元のターゲットインスタンスに委譲する動的プロキシを作成します。

それはありませんが、状態:

同様のインタフェースなしでプロキシクラスにあなたをできるようになりますし、することはできません残りの生の参照の問題のいくつかを削除します、我々は、継承を使用してプロキシを実装します将来のリリースでは、構成ベースのプロキシを使用して解決されました。

3

ビューのセマンティクスの観点から...

依存性の注入自体は依存、建設/使用するために必要なである、すなわち何か(アプリケーションの「コアの懸念」)を意味します。たとえば、車はエンジンがない車​​ではありません。

側面は、アプリケーションのコアの懸案事項とクロスカッティングされていると記載されています。これは、コアの懸念とは別のものであり、重要ではないことを意味します(あなたはそれらを「素敵なもの」と考えることができます)。アプリケーションはアスペクトなしで実行できるため、本当に依存関係になっていますか?たとえば、車はまだイモビライザーがなくても車です。

(もちろん、これは理論的な観点からのものです。現実の世界では、セキュリティのような問題は、しばしばコアとなる懸念事項として市場性のある製品の存在にとって不可欠です。)

実際にはDIを使用して側面を実装することができますが、 。これは、コンストラクタインジェクションを排他的に使用する人からのものです。