棱镜事件聚合器和MVVM Light信使总结

3
请问有人能够为我提供Prism EventAggregator与MVVM Light Messenger服务的概述比较吗?具体而言:
  • 它们是否是类似的东西,还是针对完全不同的目的而设计的?
  • 两者的优缺点。
  • 何时应该使用它们以及何时不应该使用它们?
  • 在模块化开发中的使用,例如与MEF或Unity结合使用时。
  • 您认为相关的其他信息。
这是一个我没有看到过多次讨论的话题,我发现自己在同一个项目中仍然同时使用两个服务,尽管我的直觉告诉我应该只使用其中一种。
1个回答

3

EventAggregator和Messenger非常相似。它们都用于解耦复合应用程序中使用的不同组件之间的通信。在大多数情况下,它们都提供类似的功能。

Messenger具有向所有订阅者或使用关键字定向订阅者的选项。我不确定EventAggregator中是否存在这样的功能。

就优缺点而言,MVVMLight非常轻量级。Prism附带其他相关的dll文件。如果您不想使用Prism的所有功能,可以只使用EventAggregator。

虽然我没有将这些框架与MEF或Unity一起使用,但由于它们类似于实用程序/助手/插件或无论您称之为什么,它们应该能够正常工作。


我也成功地使用了这两个。我通常只从MVVM Light/Prism中提取我需要的部分,所以它们都相当轻量级,尽管我认为Messenger可能会稍微小一些。如果你要频繁触发许多事件,可能会有一些轻微的性能考虑,但你可能需要编写一些代码来进行比较。我对EventAggregator的一个问题是,在Windows Phone上,我必须将我的处理和过滤回调设置为public - 否则我会遇到方法访问异常,并且这些方法作为public并没有意义。对于MVVM Light,我不太确定。 - Filip Skakun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接