托管可扩展性框架(MEF)与复合UI应用程序块(CAB)

时间:2009-05-22 15:59:24

标签: .net architecture frameworks mef cab

我们目前正在考虑使用CAB或MEF进行下一次应用。我没有看到关于兄弟控制通信如何处理事件代理的编码复制的任何例子,也许我错过了它。 MEF之间的控制间通信如何工作?

此外,我们正计划使用Infragistics,它为CAB框架提供了额外的组件。 Infragistics控制如何整合到MEF中?

总的来说,MEF值得追求一个相当大的,15,000小时的严格开发,应用吗?

4 个答案:

答案 0 :(得分:7)

我可能错了,但我不认为MEF有任何事件经纪。它是一种类似于ioc容器的通用组合引擎,但旨在用于更通用的插件和应用程序可扩展性解决方案。另一方面,CAB和Prism是UI框架,允许由UI组件组成的复合应用程序。由于UI组件很可能需要彼此通信并响应其他UI组件中的活动,因此底层框架需要提供用于UI组件之间的事件(pub / sub)的机制。

答案 1 :(得分:6)

如果您正在使用带有WPF和MVVM模式的MEF,那么您的部件通常会导出ViewModel类和View类(例如DataTemplates等)。您的View绑定到ViewModel并使用依赖项属性和命令来回通信。因此,如果A部分需要与B部分通信,那么A部分可以导入对B部分ViewModel的引用,并且它们可以来回进行方法调用。 A部分还可以为Part B的事件等注册事件处理程序。

答案 2 :(得分:6)

MEF不包含事件机制,但您可以将Prism的事件聚合器与MEF一起使用。我在这里做了一个帖子。

http://codebetter.com/blogs/glenn.block/archive/2009/02/23/event-aggregation-with-mef-with-and-without-eventaggregator.aspx

它的工作方式是你基本上导出Prism的复合事件类。

HTH 格伦

答案 3 :(得分:2)

我同意斯科特的观点。 “通用”发布/订阅模型似乎很有趣,但我很少需要它。如果我想要一个解耦消息,使用MEF我只需定义一个合同IMessage,然后导出一个实现,然后在我需要的任何地方导入。如果它是一个强类型的消息,我将导入我需要说的确切部分并直接给它发消息。