MEF と IoC コンテナー (Unity、Autofac、SMap、Ninject、Windsor.Spring.net など) の違い 質問する

MEF と IoC コンテナー (Unity、Autofac、SMap、Ninject、Windsor.Spring.net など) の違い 質問する

私は依存性注入について調べていて、いくつかの記事を読みました。しかし、まだ MEF と他の IoC の違いがわかりません。そこで、私の質問は次のとおりです。どのような状況で MEF コンテナーと IoC コンテナーのどちらを使用するのがよいでしょうか?

(WPF および Silverlight) またはデスクトップ アプリケーションに MEF を PRISM と併用するとよいのはなぜですか?

一方、Web アプリケーションでは IoC コンテナーが使用されます。

では、どの依存関係テクニックを使用すべきかを決定する基準は何でしょうか?

私はこの記事を読みましたhttp://devlicio.us/blogs/casey/archive/2009/12/18/what-is-the-difference-between-an-ioc-container-and-mef.aspx、しかし、何も判断できませんでした。

ベストアンサー1

最終的に、MEF と IoC コンテナーについて私が結論付けたのは次の通りです。

不明な型やプラグイン ベースのアーキテクチャを扱う必要がある場合は、MEF を使用することをお勧めします。

IoC コンテナは既知のタイプで使用することをお勧めします。

さらに、MEFは依存性注入のためのアーキテクチャソリューションである。

一方、IoC コンテナーは依存性注入のためのコードレベルのソリューションです。

IoC コンテナーは、クラスのインスタンスを作成する依存性注入技術に過ぎず、それらのクラスのコンストラクターが他のクラスのオブジェクトを必要とする場合、IoC は必要なオブジェクトも注入します。ただし、MEF は依存性注入以上のことを行います。MEF は依存性注入にも IoC ベースのアプローチを使用しますが、依存性注入以外にも多くのことを行います。

MEF には 2 つのコンポーネントがあります。

  1. カタログ: 拡張機能の検出を担当します

  2. コンテナ: 実行中のアプリケーションに拡張機能をロードする機能を提供します

MEF は単なる依存性注入技術ではありません。アプリケーションにプラグインベースのアーキテクチャが必要な場合に使用されますが、同時に MEF は依存性注入に IoC ベースのアプローチを使用します。

これについてもっと多くの人がコメントしてくれることを期待しています。

おすすめ記事