设计模式-IObservable vs普通事件,或者为什么应该使用IObservable?

微软通过.NET Framework 4向BCL引入了IObservable<T>接口,我想:“太好了,最后,我必须使用它!” 因此,我深入研究并阅读了帖子和文档,甚至实现了该模式。

这样做之后,我意识到基本实现实际上将所有T事件发送给所有订阅者,而没有对其进行任何过滤。 即纯广播。 我在某处读到Observable模式是用于普通广播的。 我觉得这是不正确的,我缺少了一些东西。

我的问题:

  1. 如果添加过滤机制,则使用Observable模式与仅使用普通CLR事件有什么区别?

  2. 什么时候应该使用这种模式,什么时候应该选择使用普通的CLR事件?

  3. 可观察模式的主要优点是什么?

1个解决方案
28 votes

可以观察到的是Rx库的基石。 他们提供了几乎所有您需要的实现和运算符。 IObservable<T>Rx背后的想法不仅是事件的“处理”,还启用了“ LINQ to Events”。 因此,您可以轻松地编写“事件流”,与常规事件处理相比,它可以提供很多功能。

请注意,示例MSDN实现IObservable<T>不正确; 文档团队已收到通知。

Stephen Cleary answered 2020-08-12T10:28:59Z
translate from https://stackoverflow.com:/questions/3186981/iobservable-vs-plain-events-or-why-should-i-use-iobservable