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

jba*_*ndi 5 .net c# system.reactive

为了熟悉RX,我正在寻找RX在"真实世界"项目中使用的例子.

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

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

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

dah*_*byk 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));
Run Code Online (Sandbox Code Playgroud)

另外:查看https://github.com/reactiveui/ReactiveUI,了解面向XAML(WPF,Silverlight,WP),iOS和Android的基于Rx的MVVM框架.非常非常酷的东西.