Good introduction to the .NET Reactive Framework [closed]
Aside from the Microsoft documentation, is there a good introduction and tutorial to the Microsoft Reactive (Rx) framework?
Also, what is a good example (with code) that Reactive makes easier of a programming problem that is challenging to solve using conventional asynchronous coding techniques?
UPDATE: The blog posts below have been superseded by my online book www.IntroToRx.com. It is a comprehensive 19 chapter book available for free. You can browse it on the web, or download the mobi version for your kindle. You can also get it direct from Amazon for a tiny fee (~99c / 77p). If the book doesn't meet your needs or expectations, let me (the Author) know and we will do better for v2.
Thanks for the link to the Hot/Cold post. This is only one part of the full series,
- Introduction to Rx
- Static and extension methods
- Lifetime management – Completing and Unsubscribing
- Flow control
- Combining multiple IObservable streams
- Scheduling and threading
- Hot and Cold observables
- Testing Rx
- Buffer, Window, Join and Group Join
I will keep updating this blog with more Rx introductory stuff.
For more advanced stuff you want to go to the Rx Forum (MSDN).
Here's a wiki site with lots of code examples demonstrating how to use different features of the .NET Rx framework: http://rxwiki.wikidot.com/101samples
I found this to be the most comprehensive site out there, and the one that's quickest to get started with.
MSDN Site for Rx-Framework
For a Developer going deeper, the Source Code
Cool Austrian keynote about Rx
This is the best I have seen: DevCamp 2010 Keynote - Rx: Curing your asynchronous programming blues
Some interesting Videos on Channel 9
Kim Hamilton and Wes Dyer: Inside .NET Rx and IObservable/IObserver in the BCL (VS 2010)
An interview with the creator from Rx: Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx)
An introduction from the creator of Rx
- E2E: Erik Meijer and Wes Dyer - Reactive Framework (Rx) Under the Hood 1 of 2
- E2E: Erik Meijer and Wes Dyer - Reactive Framework (Rx) Under the Hood 2 of 2
An Codeproject Article
Another course first blog with links (new)
Here's an example of something that is easy to do with reactive programming, but messy (if not challenging) with classic events, it draws lines while the mouse button is down. It is readable, there is no explicit state handling:
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));
(I must confess that in that example, Pairwise() is home-grown...)
The most important thing about IObservable is that it is 'composable', just like IEnumerable.
I thouroughly recommend the video mentioned in another answer. In fact there are several different videos on the subject on Channel9:
Once you have gone through some of the basic stuff including the HandsOnLab make sure you check out Lee Campbell's Hot and Cold Observables which took some of the arcane mystery out of Rx for me :)