.NET 开发人员的响应式扩展

Reactive Extensions for .NET Developers

我找到了一些关于这个的信息,但我对此有一些困惑。所以当我们需要用到这个RX.NET.

使用这些物品有什么重要的?我什么时候需要用这个?

与每个工具集一样,它可以决定您处理问题的方式。给一把锤子,你所有的问题都可能变成钉子。 Rx.NET也是一样。它为您提供了一种新方法。您是否选择使用此方法来解决特定问题取决于您,并且与任何工具或技术一样,有利也有弊。您将需要学习并获得经验才能为自己做出这些复杂的判断。

对于初学者,Rx.NET 允许您培养编程方法 'reactively.' 这类似于函数式编程,因为您将行为声明为由底层行为组成。 Rx.NET 允许您在流上指定函数以提供新的流。这种强大的技术几乎可以应用于您能想象到的任何问题。

例如,使用 Linq 和 Rx.NET 将鼠标移动绘制为边界框内屏幕上的点的程序类似于:

mouseMovements.Where(box.Contains(m)).Subscribe(DrawPoint)

其中 mouseMovements 是您的鼠标事件 as an observable

您可以声明

myPointsInBox = mouseMovements.Where(box.Contains(m))

作为自己的可观察对象并拥有多个订阅者:

myPointsInBox.Subscribe(DrawPoint)
myPointsInBox.Subscribe(ConnectWithLines)
myPointsInBox.Subscribe(UpdatePointCounter)

您可以从流中创建流

var everyThousandthPoint= myPointsInBox.Buffer(….).Select(…)

然后和他们一起做事

   everyThousandthPoint.Subscribe(FlashPointCounter)

你懂的。