设计模式-IObservable vs普通事件,或者为什么应该使用IObservable?
微软通过.NET Framework 4向BCL引入了IObservable<T>
接口,我想:“太好了,最后,我必须使用它!” 因此,我深入研究并阅读了帖子和文档,甚至实现了该模式。
这样做之后,我意识到基本实现实际上将所有T
事件发送给所有订阅者,而没有对其进行任何过滤。 即纯广播。 我在某处读到Observable模式是用于普通广播的。 我觉得这是不正确的,我缺少了一些东西。
我的问题:
如果添加过滤机制,则使用Observable模式与仅使用普通CLR事件有什么区别?
什么时候应该使用这种模式,什么时候应该选择使用普通的CLR事件?
可观察模式的主要优点是什么?
Adiel Yaacov asked 2020-08-12T10:28:49Z
1个解决方案
28 votes
可以观察到的是Rx库的基石。 他们提供了几乎所有您需要的实现和运算符。 IObservable<T>
和Rx
背后的想法不仅是事件的“处理”,还启用了“ LINQ to Events”。 因此,您可以轻松地编写“事件流”,与常规事件处理相比,它可以提供很多功能。
请注意,示例MSDN实现IObservable<T>
不正确; 文档团队已收到通知。