IObservable与普通事件或为什么我应该使用IObservable?

时间:2010-07-06 14:14:30

标签: events design-patterns .net-4.0 system.reactive

Microsoft将IObservable<T> interface引入了使用.NET Framework 4的BCL,我想,“很好,最后,我必须使用它!”所以我深入挖掘并阅读帖子和文档,甚至实现了模式。

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

我的问题:

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

  2. 何时应该使用此模式,何时应该选择使用普通CLR事件?

  3. Observable模式的主要优点是什么?

1 个答案:

答案 0 :(得分:29)

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

请注意,IObservable<T>的MSDN实施示例为incorrect;已通知文档小组。