views:

493

answers:

2

I've been using Rx on a new financial analysis project that receives all data asynchronously. I've been pretty amazed at my personal productivity and how much more understandable my event based code is (as opposed to the previous model of event handlers with complex nested ifs and random state variables everywhere.). Has anyone else got a chance to play with it, and if so what are some of your thoughts?

+6  A: 

I believe the Reactive Extensions dramatically simplify some portions of complex, event driven programming, but the problem as a whole is not "solved".

It does handle many situations is a much cleaner, more elegant manner than previously possible. However, it does not (necessarily) always help on the generation side of some asynchronous patterns, where event driven programming is still difficult. Rx really is focused on handling the subscription side of the event, but not necessarily the producing side of the equation.

For some distinct samples, and an idea of what is being considered for future versions of C# to handle some of the more complex asynchronous models, I'd recommend watching Luca Bolognese's PDC Talk. He presented some ideas the language team is working on to help on the authoring side of asynchronous development, such as an "iterator" like syntax to produce an IAsync<T> directly, with language features to support the generation of the events.

Reed Copsey
Reed, excellent answer as always. You also made me realize that I should have calibrated my question to reflect the difficulties developers face as consumers of events, which involve a lot of difficult synchronization, and whether rx addresses those concerns.
Pierreten
A: 

I've just seen a webcast on RX extensions, not played with it, and found the explication too complicated... I thought the creators were architect astronauts.

For now I just don't see where is the problem with classic event handler... I have always found elegant solution when I had to use asynchronous communication between a client and a service.

However I'm curious with experiences from other people with this framework, depending on answers of this thread, I'll give it another try.

Nicolas Dorier
@Nicolas: There is no problem, just RX makes it easier. For example, drag and drop, in order to process it you have to pass around a flag in your events whether mouse button is clicked or not. With RX you can subscribe to Mouse down, up, move etc and than use LINQ to process event without needing to pass a flag in the event for example.
epitka