9

MEFはPRISMの代わりになりますか?

4

4 に答える 4

37

今日、PrismとMEFは互いに補完し合っていると思います。PrismとUnityと同じように。Prismは、複合アプリの構築を支援するRegionManager、DelegateCommand、EventAggregatorなどの特定のサービスのセットを導入しています。一方、MEFは、アプリケーションとフレームワークが複合であるかどうかに関係なく、それらを拡張するためのより一般的な構成メカニズムです。MEFの主な特徴は、発見可能性です。つまり、MEFは外に出て、使用可能なすべてのパーツを動的に発見できます。

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

確かにいくつかの重複があります。それが最も目立つ場所はモジュールに関してです。Prismは、検出の手段としてIModuleを使用します。MEFでは、任意のコンポーネントをパーツにすることができ、動的に検出できます。つまり、MEFを使用すると、上から下にモジュール性があり、Prismを使用すると、モジュールはよりきめ細かい単位になります。複合アプリケーションは間違いなく、MEFの時期に私たちが関心を持っている分野です。時間の経過とともに、MEF自体の中でこれらのタイプのアプリを構築するためのサポートがますます増える可能性があります。私たちはp&pと協力して、それが起こったときにスムーズな移行が行われるようにしています。

于 2009-09-12T20:34:48.930 に答える
8

編集:この答えを読まないでください。恥ずかしいほど間違っています。私は失敗します。以下のGlennBlockをお読みください。

明らかではありませんが、これは同じ質問です。 マネージドエクステンシビリティフレームワーク(MEF)とコンポジットUIアプリケーションブロック(CAB)

重複した投稿のコンセンサスは、Prismがアプリケーションコンポーネント間の通信のpub-sub手段であるEvent Aggregatorを提供することを除いて、MEFとPrismが異なる方法で同じ基本的な機能セットを提供することです。ただし、これはMEFで使用できます。本当に、それはほとんど好み次第です。

于 2009-08-24T21:30:19.163 に答える
2

MEFとPrismに関するこのSparklingClientポッドキャストをご覧ください。

于 2009-08-24T20:58:55.873 に答える
0

MEFがプリズムに取って代わることはありません

MEFは依存性注入マネージャーです。依存性注入コンテナーではありません。
MEFは、属性を使用してエクスポートとインポートを明確に割り当てる機能を提供します。

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

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

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

于 2016-09-01T02:13:22.083 に答える