反应性扩展的好例子使用[关闭]


81

我了解Rx的基础知识。我在苦苦挣扎的地方是,您将如何实际使用它而不是学术实例?在哪些常见的简单现实世界场景中,Rx是比.NET今天更好的解决方案?


3
:我在WPF写Bing搜索的演示,其中Rx blog.andrei.rinea.ro/2013/06/01/...
安德烈Rînea

2
我在博客上发布的一系列帖子中都回答了这个问题:rehansaeed.co.uk/reactive-extensions-part1-replacing-events
Muhammad Rehan Saeed

1
请查看github.com/AdaptiveConsulting/ReactiveTraderCloud。我认为这是一个很好的例子,因为他们在示例中使用了很多Reactive Extension。干杯!
thangchung,2013年

Answers:


40

有关大量示例,请参见101 Rx Samples Wiki。


13
感谢您的链接。那里有一些很好的样本。仍然不太清楚那个头部拍击声-“哦,这是解决的典型问题”示例。再说一遍,可能只是我的吸收迟缓。
基思·希尔

9
下摆...尽管得分很高,但该答案仍然是“仅链接”。你可以充实一下吗?
jub0bs 2015年

他们不是学业吗?
雷阳

28

Rx允许您编写协调并发事件的代码。如果您曾经使用过TPL(即Task),则必须进行复杂的后空翻以尝试在正确的地方使用ContinueWith或WaitAll,Rx适合您。

例如,工作流“对于该数组中的每个项目,调用一个Web服务,然后当所有这些请求都返回时,执行其他操作。如果其中任何一个失败,则整个事情都失败”。

公开,无耻地插入: 我和杰西·利伯蒂(Jesse Liberty)写的关于Rx的书旨在解决这个问题:“我如何在日常工作中使用Rx?”;“我该怎么?”


这只是表明我需要或想要接收
frostymarvelous

25

首先,IObservable是一个事件。因此,在内部使用事件的任何地方,都可以使用IObservable-如果以后需要将LINQ应用于此事件,则无需重构就可以做到。

其次,当您需要异步运行代码时,RX适用于任何情况。例如,调用Web服务或加载大图像。

但是,当它真正开始发光的时候-如果您的程序达到IObservable使用的“临界质量”,并且您开始组合不同的Observable,您将惊讶某些任务变得如此容易


5
  • 设备测量
  • 数据通过消息总线输入

现在,在这两种情况下,接收数据的标准方法都是通过事件,但是如果我要查询语法或组合,则RX在不需要事件的地方将其提供给我。


2

Rx非常通用,因此它具有无限的实用性,就像IEnumerable / IEnumerator具有无限的实用性一样。IE拉取值,IO推入值。

Foreach是IEnumerables派上用场的具体示例,但这并不能解释IEnumerable或yield或任何东西。Rx也是如此。

能够从拉动角度或推挤角度看事物,并且能够控制方向或手段,是非常强大的,因为现在您可以使用LINQ查询随意推拉计算操作员针对IO进行“免费”操作,因为它是IE的数学对偶。


0

我刚看过Rx,但是我将使用它的一个有趣的项目是创建一个Silverlight小部件,该小部件显示ASP.NET MVC Web应用程序中的活动(调用了哪些操作方法,由哪个用户等等) 。似乎Rx可以在此项目中提供很多帮助,例如并发管理和节流。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.