私が間違っていれば私を修正しますが、MEFは自動発見と自動配線が可能な未知のもの(プラグイン)を管理するためにのみ役に立ちます。将来のプロジェクトでは、アプリケーションの既知の部分を明示的に設定するための真のIoCコンテナが必要です(MEFがうまくいかない)が、さらに自動検出されたプラグインをサポートする必要があります。 IoCコンテナはこれを簡単に/デフォルトでサポートできますか?もしそうならば、 をUnityやStructureMapでどのように行うかについてのヒントを教えてください。それらは私たちが現在好む2つのものです。私たちは本当にIoCコンテナと MEFへの依存を避けたいと思います。プラグインアーキテクチャにはIoCコンテナを使用してください
答えて
MEFは従来の意味でのIoCコンテナではありませんが、制御の逆転を実行しています。実際、私はそれに同意せず、MEFは他のどのようなIoCコンテナでもあると言っています。 UnityとMEFの実際の違いは、MEFはデフォルトで明示的な型解決による構成をサポートし、構成上の型発見をサポートするということです。しかし、MEFContribプロジェクトで見てきたように、MEFの伝統的なIoCコンテナのように動作することは、まったく可能です。 MEFは、モジュラーなコンポーネントの動作に大きな基盤を提供します。ハードグラフトを多く取り入れ、設計された方法で、より多くの機能を追加することができます。たとえば、別のIoCコンテナやサービスロケータを使用して既存のコードベースを構築したとします。ExportProvider
を結び付けて、Common Service Locatorプロジェクトのようなサービスロケータにプロバイダを接続し、互換性のあるプラグインを行うことができますCSL実装をサポートし、他のIoCコンテナから派生したタイプを使用してMEFにコンポーネントパーツを構成させることができます。 MEFは依存関係の注入も行います。
特定のIoCコンテナまたはMEF自体に依存しないようにするには、一般的なコンテナ操作よりも抽象的なCommon Service Locatorのようなものを常に使用できます。そうすれば、すべてが一緒につながっていく様子を変更する必要がある場合や、変更したい場合は、比較的苦労します。ほとんどのIoCコンテナとMEFに互換性のあるCSL実装があります。
希望に役立ちます。
MEF Contribは、パーツを属性なしでPOCOにすることができますか? – bitbonk
Attributedモデルは、MEFのデフォルトのプログラミングモデルです。 MEFContribには 'ConventionCatalog'があります。これは' PartRegistry'と組み合わせると、Unity/Autofac/Windsorなどのコンテナのような型を登録することができます。 –
- 1. ポータブルクラスライブラリ用のIoCコンテナ
- 2. Kotlinのトップレベル関数にIoCを注入する方法は? IoCコンテナを使用していますか?
- 3. Qtコンテナ - 選択してください。
- 4. IoCコンテナ
- 5. Dockerファイルを使用してUIコンテナからNGINXコンテナに 'dist'フォルダをマウントしてください
- 6. 理論: "サービスロケータ" "IOCコンテナ" "IOC" "DI"
- 7. ランチャーのコンテナに使用可能なメモリを選択してください
- 8. は別のIoCコンテナ
- 9. カードはモバイルのコンテナに記入してください
- 10. BizTalk IOCコンテナ
- 11. C#IoCコンテナ
- 12. IoCコンテナ、WCF&ServiceHostFactories
- 13. EaselJS、コンテナにドラッグ&ドロップしますが、子コンテナにクリックしてください
- 14. を使用してください:android:layout_gravity
- 15. マクロを使用してください。
- 16. IoCコンテナの反パターン。なぜIoCコンテナはとても複雑で、 "派手な"方法で使用されていますか?
- 17. DockerコンテナにSCPをインストールしてください
- 18. IOCコンテナを使用して建設する必要があるものは?
- 19. 常にmy;を使用してください。ローカルを使用しないでください?
- 20. IoCコンテナの競合
- 21. Spring MVCのIOCコンテナ
- 22. 複数のコンクリートタイプにIOCコンテナを使用する
- 23. Nginxリバースプロキシ:gitlabコンテナのjwilder/nginx-proxyを使用して正しいポートを設定してください。
- 24. 一時的にコンテナを他のコンテナに置き換えてください
- 25. ドッカーのボリュームをドッカーで使用して、ボリュームデータをコンテナにコピーしないでください
- 26. リボンにはカスタムSSLContextを使用してください
- 27. savefigには別のmatplotlibrcを使用してください
- 28. コンテナを横断する要素をクリックしてください
- 29. node.jsを使用してFirebase-Adminにサインインしてください
- 30. Javascriptを使用してMongoDBに接続してください
MEFをプラグインとして使用すると何が問題になりますか?そのユースケースと.Netフレームワークの一部のために設計されています。 – jeroenh
Spring.Netを見てください。 –
あなたはIoCコンテナとMEFを避けたいと言ったので、私はこれを答えとして掲示しません。しかし、[Autofac](http://nblumhardt.com/2010/04/introducing-autofac-2-1-rtw/)はMEFとかなりよく統合されています。 –