最新版的响应式扩展(Rx)教程

52

我对响应式扩展(Reactive Extensions)非常感兴趣,但是我找不到最新的教程。我开始尝试学习 使用.NET的响应式扩展来解决异步问题,但它已经过时了。我可以弄清楚一些更改,但我不能让许多示例工作。

我在网上找到了很多文章,主要是2009年、2010年的,但它们也与当前版本不兼容。我特别想了解如何在Windows Phone和WebClient中使用Rx:

WebClient wc = new WebClient();

var o = Observable.FromEvent<DownloadStringCompletedEventArgs>(wc, "DownloadStringCompleted").Select(newString => newString.EventArgs.Result);

// Subscribe to the observable, and set the label text
o.Subscribe(s => myLabel.Text = s);

// Start the download
wc.DownloadStringAsync(new Uri("http://www.data.com/service"));

不再起作用,仅仅将 FromEvent 替换为 FromEventPattern 是不够的。

有人能给我指一个最新的资源吗?


我遇到了类似的问题 - PDF 看起来非常过时,许多方法已经不存在了,这真是令人遗憾。 - Andrew Stephens
4个回答

49
当学习Rx时,首先要理解IObservable背后的哲学以及它的推送式本质如何与IEnumerable相比。我建议以下链接可以很好地解释:另一篇更简单的Reactive Extensions教程
Lee Campbell有一个不错的系列文章,解释了API及其使用场景。他还试图保持最新版本:.NET下的Reactive Extensions入门该系列现已成为一本书,可在Rx入门中找到。
顺便说一句,我也写了一篇关于如何使用rx解决实际问题的博客文章:使用Reactive Extensions从数据库中流式传输数据
希望这可以帮助到您。

Reactive Extensions for .NET 的介绍看起来非常有用,谢谢。 - Igor Kulman
注意,李刚刚发布了一本扩展教程的电子书 - 它在他的网站上。 - JerKimball
1
这本书可以在这里获取:http://www.introtorx.com/,上面的链接文章建议去那里获取。 - Paul Tyng

20

我发现了一个名为Reactive Extensions (Rx) Koans的“实践学习”项目。
该项目最后更新时间为2012年3月,因此相当新颖。

 

“Koan”的定义

  Kōans是一个禅宗词汇,意思是通过谜语或难题让人们获得开悟或觉醒。 最常见的是“单手拍掌的声音是什么?”

该项目由一系列几乎完成的单元测试组成,您必须通过“填空”来使它们通过。

这非常不错,容易完成,并提供有价值的见解。

还有,它是由Rx团队的Bart De Smet制作的。

下面是一个典型的单元测试:

[TestMethod]
public void DoingInTheMiddle()
{
    var status = new List<String>();
    var daysTillTest = Range.Create(4, 1).ToObservable();
    daysTillTest.Do(d => status.Add(d + "=" + (d == 1 ? "Study Like Mad" : ___)))
                .Subscribe();
    Assert.AreEqual("[4=Party, 3=Party, 2=Party, 1=Study Like Mad]", status.AsString());
}

1
Codeplex已经消失了。有人友好地将koan移植到了.net 5,并将其上传到github上。 - Endy Tjahjono

16

迄今为止帮助我理解Rx最好的资源是:http://www.introtorx.com/

我认为很多人都会遇到这个问题,就是当你使用"Rx教程"这些关键字搜索时无法找到该网站。也许有人需要给该网站添加一些标签!


2
那很有趣,李·坎贝尔先生是《IntroToRx》的作者 :) - Rohit Sharma

5

按行(每一行)阅读并实践这本在线书籍。这很有用,我在开始使用 Rx 时也是这么做的。

http://www.introtorx.com/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接