Rx的真实世界的例子

the*_*onk 23 .net c# asynchronous system.reactive

可能重复:
使用Reactive Extensions的好例子

我一直在玩Reactive Extension一段时间,但主要限于处理/编写WPF前端内的用户驱动事件.

这是一种强大的,新的异步编程方式,我很好奇其他人正在做什么,你认为它可以改善我们目前做事的方式?

PL.*_*PL. 39

我们已经在两个项目(Silverlight UI)上使用了RX取得了巨大的成功.最初的目的是简化WCF访问层.理性的是,在更糟糕的情况下,我们总是可以恢复到标准(回调)方式,而不会影响更高级别的UI.

我们很少知道RX就像一种令人上瘾的药物 - 一旦你开始使用它,就不会再回来了.像病毒一样,它很快从这个低级通信层一直传播到UI组件:

  • 我们从简单的语法糖开始,使访问WCF服务更简单.
  • 从那里将RX扩展到服务器到客户端的异步消息传递是一个自然的步骤
  • 之后使用RX将这两种方式合并为客户端与服务器进行通信,因此viewmodels对于如何接收消息是不可知的默认选项.

然后是完全投降:

  • 需要处理无序的消息?
  • 价格变动时需要在电网上闪一个单元吗?
  • 有一个性能问题,因为客户端被来自服务器的消息轰炸?
  • 有一些基本的CEP逻辑来处理?

好吧,猜猜看,那里有RX运算符;)(如果没有 - 你可以很容易地写一个)

其中最难的部分就是克服我们团队中每个人在开始时都经历过的"我的大脑疼痛 - 如此糟糕"的感觉.通过多年的处理 - 我的事件 - 通过这种回调编码来限制一个凡人的大脑,就像RX看世界一样.结果RX代码(特别是一旦它逐渐变得越来越密集,同时处理越来越复杂的场景)对于一个毫无准备的头脑看起来像完整的abracadabra有趣的确导致一只兔子从一个看似空洞的帽子中拉出来.不幸的是,现实是在生产代码中没有魔法的地方,因此整个团队必须在船上,这意味着每个人都必须经历这个痛苦的过程,重新调整他们的大脑,看起来像一个非常不自然的方式.

我会说这是一个人为因素而不是RX API本身,这是有效采用RX的最大障碍.但男孩是值得的!

  • LOL几乎在这里有相同的体验;)我必须添加的唯一的事情是RX只对一个新人看起来"abracadabra",对于那些已经适应这个概念的人来说它非常具有描述性. (3认同)
  • +1这就是我对它的感受.这是一个学习曲线,一旦你得到它,就像一扇门打开,它到处都是.有点像LINQ :) (2认同)

Ana*_*tts 11

我已经编写了一个更完整的库来集成WPF/Silverlight和Rx,文档是(编辑:不再糟糕!),但您可以在以下位置查看:

http://www.reactiveui.net