ReactiveUI(RxUI)与Reactive Extensions

时间:2016-01-11 17:29:14

标签: c# system.reactive reactiveui

来自http://docs.reactiveui.net/en/index.html

  

ReactiveUI是一个MVVM框架,允许您使用Reactive   .NET的扩展,以创建优雅,可测试的用户界面   在任何移动或桌面平台上运行。

RxUI与Reactive Extensions有什么不同?

为什么我更喜欢RxUI而不是MVVMCross / light + Rx?有什么特别的? RxUI可以做一些Rx不能做的事情吗? 它更简洁吗? 它更舒适吗?

我在github页面https://github.com/reactiveui/ReactiveUI#a-compelling-example上看到了一些例子。但我不能只用Rx吗?

P.S。是否有API doc?

1 个答案:

答案 0 :(得分:30)

你在这里提到了很多问题,所以我会逐一回答。

  

RxUI与Reactive Extensions有什么不同?

是。 Reactive Extensions“用于通过使用可观察序列和LINQ样式查询运算符来编写异步和基于事件的程序的库。”它与UI无关。 Rx为您提供了对数据流的一般抽象。

RxUI是一个MVVM框架,意思是it is a library of classes helping you implement MVVM pattern in your app

  

RxUI可以做Rx不能做的事情吗?它更简洁吗?它更舒适吗?

它有不同的用途。 Rx提供了一组方法,通常可以帮助您移动应用程序中的数据。 RxUI用于创建用户界面。它在引擎盖下使用Rx,并且还从它的组件中公开Rx类型的API(即IObservble<T>)。

例如,ReactiveUI中的ICommand实现,名为ReactiveCommand,exposes a property called ThrownException,类型为IObservable<Exception>(您可以将其视为“一系列错误”)。

请注意,虽然IObservable<T>接口类型是.Net基类库的一部分,但实际上所有使用此类型运行的有用函数都包含在Reactive Extensions库中。

  

但我不能只用Rx做同样的事情吗?

不,因为 - 例如 - Rx没有为您提供ICommand实现,这是每个MVVM框架的重要组成部分。

  

为什么我更喜欢RxUI而不是MVVMCross / light + Rx?有什么特别的?

如果您想在应用程序中大量使用Reactive Extensions,您可能更喜欢使用RxUI(而不是其他MVVM框架),因为它们彼此之间的集成非常好。结合起来,它们为您提供了大量开箱即用的功能(例如,请查看ReactiveCommandWhenAny

话虽如此,as the creator of RxUI stated it

  

您可以将ReactiveUI与其他MVVM框架一起使用,您不需要提交其中一个。 RxUI中的许多方法,例如WhenAny可以处理任何对象,并在运行时确定如何最好地连接它们。

     

RxUI绝对是一张自助餐桌(拿你想要的东西!),而不是七道菜的餐点:)

最后:

  

P.S。是否有API doc?

是的!看看这里:https://reactiveui.net/api/

作为旁注,请随意浏览Reactive Programming section of the docs,这将向您解释框架背后的一些基本术语和概念:)