我是反应式扩展的新手。我知道 Rx 会观察底层对象的任何更改(在运行时),并在更改时通知订阅者。
考虑事件的 Rx,它检查任何事件并将这些更改发布到订阅。同样,我们有事件聚合器,它将事件发布给订阅者。两者都在做同样的工作。两者都有相同的目的。我们两者之间有什么区别吗?
感谢您的答复
我是反应式扩展的新手。我知道 Rx 会观察底层对象的任何更改(在运行时),并在更改时通知订阅者。
考虑事件的 Rx,它检查任何事件并将这些更改发布到订阅。同样,我们有事件聚合器,它将事件发布给订阅者。两者都在做同样的工作。两者都有相同的目的。我们两者之间有什么区别吗?
感谢您的答复
以我的经验,EventAggregator 是单例,它颠倒了职责的方向,以便 UI 可以相互发送消息并破坏域抽象。我个人认为 EventAggregators(特别是 Prism)是对错误问题的正确答案。
一般来说,我认为在使用 EventAggregator 的地方,应该将它们替换为对适当域实体或服务的调用,这可能会将操作的结果公开为事件(Rx 或其他)。现在使用 IoC 相关方可以将相关实现注入其中,然后他们可以订阅事件(再次 Rx 或其他方式)。
——吐槽——
但是,为了更好地回答您的实际问题,我认为如果您确实使用 EventAggregator,您的问题可能实际上是“我应该将通知公开为 .net 事件还是 Rx Observable 序列(IObservable)”
我在这种情况下,我看不出有什么不同。如果不需要调度/并发控制、事件/通知的组合或序列的转换(如节流或缓冲),那么您当前使用事件就可以了。