私が作成したいのは、すべて個別の DLL になるいくつかのタブ/モジュールを備えた Silverlight アプリです。
PRISM には、UI を実行することを目的としたシェル/モジュールの概念があり、素敵なデモ (digg/twitter を検索する方法を示しています) を見つけました。
しかし、VS2010 には MEF が含まれるようなので、そのオプションを使用したいと考えています。
誰かがどういうわけか明確に違いを説明できますか? (私は上級プログラマーではありません)
MEF と Prism は、2 つの非常に異なる目的を果たします。
Prism は基本的に、複合アプリケーションを設計するためのガイダンスです。ここでは、動的に割り当てられ、統合されるシェルと「リージョン」があります。インジェクションに使用する IoC コンテナー (Unity) が含まれています。
MEF は依存性注入フレームワークです。その主な目的は、実行時にアプリケーションの依存関係を「埋める」ことです。この点で、Unity が Prism 内で行うのと同じ目標を満たしています (実際、Unity の代わりに MEF を使用するように Prism を簡単に作り直すことができます)。
Prism はいくつかの点でより広い範囲をカバーしますが、実際には GUI アプリケーションに限定されています。MEF はただ 1 つのこと (Dep. Injection) を行っているだけですが、あらゆるタイプのアプリケーションに対して、より汎用的な目的を目指しています。
これらの製品の寿命については、ここに答えはありませんが、開発方法は次のとおりです。
Prism は Patterns and Practices チームによって開発されました。目標は、必ずしもソフトウェアを作成することではなく、ガイダンスを提供することです。そのため、Prism ライブラリとサンプルを (あまり頻繁ではありませんが) 更新していますが、Prism は Microsoft が出荷するフレームワークの中核部分ではありません。これは実際にはサード パーティのライブラリです (MS が多額の資金を提供していますが、P&P 担当者のほとんどは MS の FTE ではありません)。
ブログ投稿によると、MEF はフレームワークに統合され、MS プロジェクト内で直接使用される予定のようです。そのため、Microsoft から直接、大規模な開発が行われ、Microsoft の製品で使用されています。
私は個人的に、Prism のドキュメントを読み (そして本を持って)、サンプルを確認しました。アプリケーションを分割する方法を理解することは非常に役立ちますが、完全で使用可能なフレームワーク以上のガイダンスです。サンプルは、複合アプリケーションの設計方法についてアーキテクトを教育するという目的で設計されていることを行うのに非常に優れています。
あなたの目標が、Silverlight アプリケーションで問題を明確に分離することだけである場合、必ずしも Prism を使用するだけでなく、MVVM の学習に重点を置きます。
MEF を使用する場合は、他にも適切なオプションがあります。たとえば、WPF アプリケーション フレームワークは、MEF を使用して構築された完全な MVVM フレームワークであり、非常に優れています。
したがって、MEF と Unity は基本的に同じです...
まあ、正確ではありません。MEF は、コンパイル時に認識されない拡張機能に重点を置いていますが、IOC コンテナーは通常、コンパイル時に認識されている依存関係に重点を置いています。この質問に対する一番の答えは、違いをよく説明しています。
基本的に、MEF は汎用の拡張性フレームワークです。
拡張可能なアプリケーション、拡張可能なフレームワーク、およびアプリケーションの拡張機能を構築している場合は、MEF が適しています。
一方、Prism は主に GUI を構築するためのものです。
複合クライアント アプリケーション ガイダンスは、モジュール式の Windows Presentation Foundation (WPF) および Silverlight クライアント アプリケーションをより簡単に構築できるように設計されています。
はい。詳細については、次の 2 つの投稿を確認してください。
http://blogs.msdn.com/gblock/archive/2009/12/02/mef-and-prism-to-be-or-not-to-be.aspx http://blogs.msdn.com/dphill /archive/2009/12/09/prism-and-mef.aspx