在“现实世界”中如何使用响应式扩展(Reactive Extensions)技术

5

为了熟悉RX,我正在寻找在“现实世界”项目中使用RX的示例。

我对.NET版本或JavaScript版本都很感兴趣。对于闭源项目的参考将会很有趣。开源项目将更加有趣。

同时,了解为什么RX是这些项目的不错选择也会很有意思。

我不需要教程或介绍。


我在我的博客上发布了一系列文章,准确回答了这个问题:http://rehansaeed.co.uk/reactive-extensions-part1-replacing-events/。 - Muhammad Rehan Saeed
2个回答

13
在不到一个小时的时间内,我成功地将 Rx 支持添加到开源 ESB MassTransit 中:http://masstransit-project.com/更新: 为什么它很适合使用呢?因为他们已经有了一种订阅 / 取消订阅机制。添加 Rx 支持意味着这些订阅现在可以轻松地组合在一起。例如,您可能有两种共享某个 CorrelationId 的消息。使用 Rx,您可以轻松地通过该标识符进行 Join() 发布的消息。 https://github.com/MassTransit/MassTransit/tree/master/src/MassTransit.Reactive
var someMessages = bus.AsObservable<SomeMessage>();
var otherMessages = bus.AsObservable<AnotherMessage>();

var joined = from s in someMessages
             join o in otherMessages
               on s.CorrelationId equals o.CorrelationId
             select new { s.Something, o.OtherThing };

joined.Subscribe(x => Console.WriteLine(x));

另外:请查看https://github.com/reactiveui/ReactiveUI,这是一个针对XAML(WPF,Silverlight,WP),iOS和Android的基于Rx的MVVM框架。非常非常酷。


抱歉挖掘一个老问题,但我最近一直在使用你的响应式扩展到MT - 有没有想过如何让它与单元测试调度程序“友好相处”,比如HistoricalScheduler?(非常干净的实现方式,顺便说一下!) - JerKimball
我不能为其当前状态负责。 :) 我建议在MassTransit上开一个问题来询问这个问题(请标记@dahlbyk)。 - dahlbyk

1

以下是两个闭源/商业示例:

  1. 银行正在使用 Rx 适配器来管理其消息总线基础设施。

  2. Nirvana 的制造商,一款网络流媒体产品,将在其下一个版本中提供基于 API。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接