2009-08-24 14 views

答えて

8

編集:この回答を読んではいけません。それは恥ずかしいほど間違っています。私は失敗です。下記のGlenn Blockを読んでください。

それは明白ではないのですが、これは同じ質問です:重複した記事で Managed Extensibility Framework (MEF) vs. Composite UI Application Block (CAB)

コンセンサスは、そのプリズムはEvent Aggregatorを提供以外MEFとプリズムは、異なる方法で機能の同じ基本的なセットを提供することをありますこれは、アプリケーションコンポーネント間の通信のパブサブ手段である。ただし、これはMEFで使用できます。それはかなり好みまで、本当にです。

+5

私はそれが1年前からあったことを知っています。私はたくさんのことを学びましたが、この答えは本当に間違っています。 Glenn Blockの投稿はより正確です。これは、Prism V4がさまざまな形のIoCと合成に* MEFを使用するオプションを持っているという事実の中で、最も顕著に見られます。私は自分の投稿を削除することはできません。 –

+6

何かを読んで、 "誰がこのダンボールなの?...ああ"と言って変だ。 –

+3

+1純正正直。あなたの答えは「最も正しい」ものではありませんが、グレンの答えとは対照的に洞察を与えます。 MEF/Prism/Unity/MAFの間の責任/機能のラインは、あまりにも曖昧です(そして、あなたはダウンボートのいずれかに値しません)。 – Doug

2

この​​をMEFとPrismでご覧ください。

36

今日、私はプリズムとMEFがお互いを補完していると言います。プリズムと統一のように。 Prismは、複合アプリケーションの構築を支援するRegionManager、DelegateCommand、EventAggregatorなどの一連の特定のサービスを導入しています。一方、MEFは、複合体であるか否かにかかわらず、アプリケーションとフレームワークの拡張性のためのより一般的な構成メカニズムです。 MEFの重要な特徴は、発見可能であることです。つまり、利用可能なすべてのパーツを動的に発見して発見することができます。

UnityとMEFの統合レイヤーを含むMEF contribプロジェクト(mefcontrib.codeplex.com)をチェックしたいと思うかもしれません。この拡張で、UnityはMEFを裏で管理します。したがって、あなたは2人のコンテストと対立していません。利点は、一般的なPocosにはUnityを使用でき、拡張機能の検出にはMEFを使用できることです。したがって、Prismは現在Unity上に構築されているため、MEFを活用するために使用することができます。 contribプロジェクトを使用するには、Unity Bootstrapperに若干の変更を加える必要がありますが、それはかなり簡単です。

重複があります。それが最も顕著な場所はモジュールです。 Prismは発見の手段としてIModuleを使用します。 MEFでは、どのコンポーネントも部品であり、動的に発見することができます。これは、MEFでは、上から下へのモジュール化、プリズムによるwheras、モジュールはより細かい単位であることを意味します。複合アプリケーションは、MEF時代には確かに納得のいく分野です。時間が経つと、MEF自体の中でそれらのタイプのアプリケーションを構築するためのサポートがますます増えていくでしょう。私たちはp & pと一緒に働いていることを確認しています。

+0

しかし、[PrismのMEFサポートは終了しています](https://github.com/PrismLibrary/Prism):「MEFは、以前のバージョンとの互換性のためにWPFでサポートされています。 Windows 10のUWPやXamarinフォームには追加されません。 – Informagic

0

MEFは、プリズム

MEFは、依存性注入manager.itsない依存性注入コンテナで置き換えることはありません。
MEFは、属性を使用して、エクスポートとインポートをデラクルに割り当てることができます。

Prism with MEFを使用すると、dllを自動検出する機能と、dllを追加または削除することで、プラグインの追加と削除を行うことができます。 プリズム・フレームワークは、イベント・アグリゲータ、リージョン・マネージャ、サービス・ロケータを提供します。

MEFなしでプリズムを使用することができます。 ninject、unity、その他のDIコンテナなど、さまざまなオプションがあります。

プラグインベースの拡張可能アプリケーションを構築するために、プリズム付きのMEFを使用できます。