18

我要创建的是一个 Silverlight 应用程序,其中包含几个选项卡/模块,这些选项卡/模块都是单独的 DLL。

我看到 PRISM 具有似乎针对 UI 的 Shell/Module 概念,并且我找到了一个不错的演示(显示如何搜索 digg/twitter)。

但听起来 MEF 将包含在 VS2010 中,所以我想选择那个选项。

谁能以某种方式清楚地解释这些差异?(我不是高级程序员)

4

4 回答 4

24

MEF 和 Prism 服务于两个截然不同的目标。

Prism 基本上是设计复合应用程序的指南 - 您有一个外壳和动态分配和集成的“区域”。它包括一个用于注入的 IoC 容器(Unity)。

MEF 是一个依赖注入框架——它的主要目标是在运行时为应用程序“填充”依赖关系。在这方面,它与 Unity 在 Prism 中实现的目标相同(事实上,您可以很容易地重新设计 Prism 以使用 MEF 而不是 Unity)。

Prism 在某些方面填补了更广泛的范围,但实际上也仅限于 GUI 应用程序。MEF 只做一件事(Dep. Injection),但更适用于任何类型的应用程序。


至于这些产品的生命周期——这里没有答案,但这就是它们的开发方式:

Prism 由 Patterns and Practices 团队开发。目标不一定是制作软件,而是提供指导。因此,他们会更新(尽管不经常)Prism 库和示例,但 Prism 并不是 Microsoft 提供的框架的核心部分。它实际上是一个第三方库(尽管 MS 为它提供了很多资金,但大多数 P&P 人员都不是 MS FTE)。

从博文来看,MEF 听起来像是计划集成到框架中,并直接在 MS 项目中使用。因此,它直接从微软得到大量开发,并被用于他们的产品中。

我个人已经阅读了 Prism 文档(并拥有这本书),并浏览了示例。了解如何拆分应用程序非常有帮助,但它确实是一种指导,而不仅仅是一个完整、可用的框架。这些示例非常擅长完成它们的设计目标——教育架构师如何设计复合应用程序。

如果您的目标是在silverlight 应用程序中保持关注点的清晰分离,我将更多地关注学习MVVM,而不是仅仅使用Prism。

如果您想使用 MEF,还有其他不错的选择。例如,WPF 应用程序框架是一个使用 MEF 构建的完整的 MVVM 框架,并且相当不错。

于 2009-10-20T15:38:13.840 回答
6

基本上,MEF 是一个通用的可扩展性框架:

如果您正在构建可扩展应用程序、可扩展框架和应用程序扩展,那么 MEF 适合您。

而 Prism 主要用于构建 GUI:

复合客户端应用程序指南旨在帮助您更轻松地构建模块化 Windows Presentation Foundation (WPF) 和 Silverlight 客户端应用程序。

于 2009-10-20T15:30:35.260 回答
6

所以MEF和Unity基本一样……

嗯,不完全是。MEF 更侧重于在编译时未知的扩展,而 IOC 容器通常侧重于在编译时已知的依赖项。这个问题的最佳答案很好地解释了这些差异。

于 2009-10-20T16:22:41.190 回答
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

于 2009-12-22T18:19:39.703 回答