MEF在多大程度上取代了PRISM?
今天我会说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合作,以确保在发生这种情况时,顺利过渡.
编辑:不要读这个答案.这是令人尴尬的错误.我失败了.阅读下面的Glenn Block.
这并不明显,但这是同一个问题: 托管可扩展性框架(MEF)与复合UI应用程序块(CAB)
重复帖子中的共识是MEF和Prism以不同的方式提供相同的基本功能集,除了Prism提供Event Aggregator,它是应用程序组件之间的pub-sub通信方式.但是,您可以将其与MEF一起使用.真的,这几乎取决于偏好.