MEF:PRISM的替代品?

时间:2009-08-24 20:51:47

标签: prism mef extensibility codeplex

MEF在多大程度上取代PRISM?

4 个答案:

答案 0 :(得分:37)

今天我会说Prism和MEF相互补充。就像棱镜和团结一样。 Prism引入了一组特定的服务,如RegionManager,DelegateCommand和EventAggregator,它们有助于构建复合应用程序。另一方面,MEF是一种更通用的组合机制,用于应用程序和框架的可扩展性,无论它们是复合还是否。关于MEF的关键区别在于它的可发现性,这意味着它可以外出并动态发现所有可用的部分。

您可能有兴趣查看包含Unity和MEF集成层的MEF contrib项目(mefcontrib.codeplex.com)。通过该扩展,Unity在幕后管理MEF,因此您不会与两个contianers竞争。它的优点是它允许您将Unity用于一般Pocos,并使用MEF来发现扩展。因此,当Prism目前在Unity上构建时,您可以使用它来利用MEF。要使用contrib项目,您必须对Unity Bootstrapper进行一些细微的更改,但这应该是相当简单的。

肯定有一些重叠。关于模块,它最突出的地方。 Prism使用IModule作为发现手段。在MEF中,任何组件都可以是一个组件,可以动态发现。这意味着使用MEF,您可以从上到下实现模块化,使用Prism时,模块是更精细的单元。复合应用程序绝对是我们在MEF时间上所面临的一个领域。随着时间的推移,您很可能会看到越来越多的支持在MEF内部构建这些类型的应用程序。我们正在与p& p合作,以确保顺利过渡。

答案 1 :(得分:8)

编辑:请勿阅读此答案。这是令人尴尬的错误。我失败了。阅读下面的Glenn Block。

这不是很明显,但这是同一个问题: Managed Extensibility Framework (MEF) vs. Composite UI Application Block (CAB)

重复帖子中的共识是,MEF和Prism以不同的方式提供相同的基本功能集,除了Prism提供Event Aggregator,它是应用程序组件之间的pub-sub通信方式。但是,您可以将其与MEF一起使用。这真的非常依赖于偏好。

答案 2 :(得分:2)

在MEF和Prism上查看Sparkling Client podcast

答案 3 :(得分:0)

MEF永远不会取代棱镜

MEF是依赖注入管理器。不是依赖注入容器 MEF提供了使用属性明确分配导出和导入的功能。

使用MEF的Prism使您能够通过添加或删除dll来自动发现dll以及添加和删除插件的能力。 棱镜框架提供事件聚合器,区域管理器,服务定位器。

您可以在没有MEF的情况下使用棱镜。还有其他各种选项,如ninject,unity和其他DI容器。

您可以将MEF与prism一起用于构建基于插件的可扩展应用程序。