除了微软的文档,是否有一个很好的Microsoft Reactive (Rx)框架的介绍和教程?
另外,有什么好的例子(有代码)可以让使用传统异步编码技术难以解决的编程问题变得更容易?
除了微软的文档,是否有一个很好的Microsoft Reactive (Rx)框架的介绍和教程?
另外,有什么好的例子(有代码)可以让使用传统异步编码技术难以解决的编程问题变得更容易?
当前回答
DEVHOL202 -用。net的响应式扩展(PDF, 2 MB)治愈异步的沮丧是我迄今为止看到的最好的实验/教程。它指导您了解库的基础知识,以便您可以在您所学的基础上进行构建和设计。
还有一个JavaScript版本。搜索谷歌“反应式扩展手实验室”。
其他回答
为了回答第二个问题,这里有一个可以从Rx中获益良多的问题。这叫做“快速致富”。
你们开发了一款同名游戏,而且销量不错。但它只能在你的商店批发。为了使现金处理更容易,你有一个传送带流向你。
(请随意更改上面的故事:))
销售人员把捆扎好的现金放在上面,但没有标明钞票的数量和种类。你的工作是分类和数钱。以后,当你有了更多的钱,你可以雇佣其他人来帮助你。
在这种情况下,来源是大量现金的异步来源(生产者)。 你的员工和供应商期待钱,但你必须消耗这些钱,拆包,并使用自定义业务逻辑适当地重新包装,以支付他们。
销售人员按照他们自己的思路行事,这样他们就不必等着你数他们往腰带上扔了什么。如果你被告知什么时候有更多的钱可以数,那么你的时间是最好的利用,在那之前你可以做其他工作。
您可以用字节[]表示每个叠。
这是现实世界中相当常见的情况;当你在网络上检索任何资源(例如搜索引擎的网页、图像或视频)或从外围设备获取数据时,你会以字节块(可能带有标题)的形式获取它们。在单个线程中,或者在难以处理的多线程环境中,您倾向于聚合和处理它们。再也不会了!!
你可能会发现这一系列关于响应式LINQ的文章(共有四篇)很有用: 响应式编程(2)-引入响应式LINQ。
他有一个使用它编写游戏的例子,所以它应该是你所寻找的。
这里有一个用响应式编程很容易做到的例子,但是用经典事件很麻烦(如果没有挑战性的话),当鼠标按钮按下时,它会画线。它是可读的,没有显式的状态处理:
var pen = new Pen(Color.Red, 3);
var graphics = this.CreateGraphics();
var mouseMoveWhileDown =
from md in this.GetMouseDown()
from mv in this.GetMouseMove().Until(this.GetMouseUp())
select new Point(mv.X, mv.Y);
mouseMoveWhileDown
.Pairwise()
.Subscribe(tup => graphics.DrawLine(pen, tup.Item1, tup.Item2));
(我必须承认,在这个例子中,Pairwise()是自制的…)
IObservable最重要的一点是它是“可组合的”,就像IEnumerable一样。
我彻底推荐另一个答案中提到的视频。事实上,在Channel9上有几个不同的视频:
你的“排除微软文档”条款是否适用于第九频道的视频?
来自响应式框架的创建者Erik Meijer: -专家对专家:Brian Beckman和Erik Meijer - .NET响应式框架内部(Rx)
全新:入门。net的Rx扩展
DEVHOL202 -用。net的响应式扩展(PDF, 2 MB)治愈异步的沮丧是我迄今为止看到的最好的实验/教程。它指导您了解库的基础知识,以便您可以在您所学的基础上进行构建和设计。
还有一个JavaScript版本。搜索谷歌“反应式扩展手实验室”。