Posted By: Charles | Aug 4th, 2009 @ 10:02 AM | 53,475 Views | 28 Comments
You recently learned about Erik Meijer's latest innovation, Rx, here on Channel 9. Clearly, judging by the views and comments on that post, it piqued your interest and curiosity. Wes Dyer, a rock star developer on Erik's team of rock stars, implemented a great deal of Rx and helped to design it along with Erik.

Visual Studio 2010 will ship with with two new types, IObserver and IObservable. Rock star developer Kim Hamiliton (you've met her on C9) implemented these two types in the BCL and worked closely with Erik and Wes to insure that Rx in the BCL is designed and implemented to meet the strict requirements for new types in .NET's robust general purpose library. As you've learned previously, IObservable is the mathematical dual of IEnumerable. We of course talk about this here, but from the developer perspective. You've already learned about the math and continuation monad behind this with Erik and Brian Beckman.

Here, Kim and Wes dig into the implementation of IObservable and IObserver in the 2010 version of the BCL. How did Erik and team work with the BCL folks? What were the design decisions that led to the final implementation of the two Rx types in the BCL? What do these two new types enable for .NET developers? This is a great example of how innovation comes to market: incubation teams come up with a brilliant idea, refine it by working with multiple teams and some researchers in MSR, pass it along to a product group, they go back and forth on implementation details and design requirements and finally the new stuff is added to the shipping code base. Great stuff!!

Make sure to watch this all the way through. You never know what kind of magic can happen if you know how to summon a wizard.

Enjoy!
Rating:
4
0
vesuvius
vesuvius
La Petite Danseuse de Quatorze Ans

So I take it this is not in VS 2010 beta 1, but may be in beta 2? Downloading...

A.W.E.S.O.M.E. Smiley I don't suppose there's any rough estimate of Beta 2's arrival Charles? Is breath holding advised?

In your first C# sample...


var o = Observable.Return(1);



o.Subscribe(
    x  => Console.WriteLine("OnNext({0})", x),
    ex => Console.WriteLine("Error()"),
    () => Console.WriteLine("Completed()")
    );



I see you are creating an IObservable object, and you are subscribing to it, but what is telling the observable object to begin calling the OnNext method on its subscribers?

Bass
Bass
A computer once beat me at chess, but it was no match for me at kick boxing.

When you say 2010 BCL, you mean .NET 4 right?

Microsoft Communities