As you may have noticed, I’ve been blogging a bit about the Reactive Framework, now the Reactive Extensions for .NET (Rx) and how it will change the way we approach asynchronous and event-based programming. Just as LINQ to Objects changed the way we deal with collections, The Reactive Extensions will change the way we deal with asynchronous and event-based programming. Fast forward to today, Rx has been released on Microsoft DevLabs for not only .NET 4 Beta 2, but also .NET 3.5 SP1 and Silverlight 3 as well.
If you’re not familiar with Rx, it is a library for composing asynchronous and event based programs together using observable collections (IObservable<T>). This is especially important in the development of Silverlight, which disallows blocking networking and threading calls from happening and instead forces you into an asynchronous model, but just as well, it’s quite useful for other applications such as traditional desktop applications and web applications. With that comes its own set of challenges. How do I compose these asynchronous events together? How do I handle exceptions? How about cancellation?
The Reactive Extensions, the contain a superset of the standard LINQ operators we’ve come to know and use quite frequently in our applications which are based not off the IEnumerable<T>, but instead IObservable<T>. The IObservable<T>/IObserver<T>, being the mathematical dual of IEnumerable<T>/IEnumerator<T> allows us to go from the pull model to the push model with ease. With that, we can create abstractions over asynchronous methods, events, Parallel Extensions for .NET Tasks, StreamInsight, F# First Class Events and more.
Download it today and give the team feedback.