在“真实世界”中使用反应性扩展

时间:2011-04-09 20:50:32

标签: c# .net system.reactive

为了熟悉RX,我正在寻找RX用于“真实世界”项目的例子。

我对.NET版本或JavaScript版本感兴趣。 对封闭源项目的引用会很有趣。开源项目会更有趣。

为什么RX是这些项目的不错选择也很有趣。

我不是在寻找教程或介绍。

2 个答案:

答案 0 :(得分:12)

在不到一个小时的时间里,我就可以向开源ESB MassTransit添加Rx支持:

https://github.com/MassTransit/MassTransit/tree/master/src/MassTransit.Reactive

更新:至于为什么它很合适,他们已经有了订阅/取消订阅机制。添加Rx支持意味着现在可以轻松地将这些订阅组合在一起。例如,您可能有两种共享某些CorrelationId的邮件。使用Rx,您可以通过该标识符轻松Join()发布的消息:

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框架。非常非常酷的东西。

答案 1 :(得分:1)

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

  1. 银行正在其消息总线基础架构上使用Rx适配器。

  2. 网络流产品Nirvana的制造商将在其next release产品中提供基于API的产品。