【问题标题】:IObservable vs Plain Events or Why Should I use IObservable?IObservable 与普通事件或我为什么要使用 IObservable?
【发布时间】:2010-07-06 14:14:29
【问题描述】:

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

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

我的问题:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    请注意,IObservable<T> 的示例 MSDN 实现是 incorrect;已通知文档团队。

    【讨论】:

    • 您好,感谢您的回复,您能否详细说明“启用“LINQ to Events”。这样您就可以轻松编写“事件流”或举个例子?adiel。
    • Rx wiki page 有几个 LINQ to Events 类型的示例。还有著名的“拖放”video
    • +0 我敢打赌你对你没有提供的#2有很多见解:P
    • @RubenBartelink:你点击链接了吗?那里描述了一个具体问题,从那时起,Rx 团队发布了more details on the IObservable requirements
    • 感谢您的回复。老实说,我也没有跟随。既然我有(而且我觉得它没有解决我所问问题的方面),我有asked a related question
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多