There are several benefits to the Pattern exposed by the IObserver<T>/IObservable<T> interfaces (here on referred to as Rx which is the implementation of these interfaces).
As there is a single interface (IObservable<T>) for Observing events, notifications, stream updates etc, the power of LINQ can be applied.
1) Consistency in resource management - As stated above event handles can be a common form of memory leaks. Using Rx will not in itself solve that problem, however it does offer the consistent dispose pattern via IDisposable. This willallow users and tools (like FxCop) to track resource allocation and disposal ina more effective manner.
2) Composition - Many observable sequences can be composed together in many different patterns(Concatenation, Merging, Grouping, Joining etc) which allows for a vast number of use cases. Composition can also aid in resource management as often there will only be a single resource (subscription) to dispose of from the result of a composite observable sequence.
3) Unitive - For an example; if you were trying to compose a Button Click that started a subscription to a Comet feed which should only last for a certain amount of time and then terminate, this would be generally implemented imperatively and possibly using three styles of event handling (Event Handles, APM, Windows Timers). An alternative is that all of these could be exposed via IObservable<T> giving the consuming developer a single pattern to work with.
4) Declarative - As with the example above, without a single interface to work with you would lose the Declarative nature of LINQ. You would probably need several classes to encapsulate the plumbing and possibly a Controller to orchestrate the workflow. With Rx you use extension methods to transition from any of these three example patterns (Event Handles, APM, Timers) into IObservable<T> and then you can use a single declaritive LINQ statement to define the workflow in a declarative nature. Using Rx, this could be achieved with a single LINQ statement which would declare the intent of the code more succinctly.
5) Transformational - As with other flavours of LINQ is is easy to transform in input type to a different output type. You may reduce the input to a more primitive type or you may combine many streams and enrich the single output as a specialised composite of the observable sequences.
6) Extensible - As LINQ offers the ability to provide extension methods you can easily add your own extensions to IObservable<T>. Rx already exposes literally hundreds of extension method overloads that cover Creation, Transformation, Filtering, Scheduling (handling concurrency), Aggregation and Combination/Composition.
In addition to the LINQ benefits that using IObservable<T> via Rx will give you, it also offers other benefits such as :
*an effective and simple way to manage concurrency via the IScheduler interface.
*a Testing framework to enable unit testing of event based workflows. In the example (from point 3 above), it would prove difficult to test all of the moving parts. However as with Rx it would be a single declarative statement then the testing should be greatly simplified.
*IQbservable<T> is to IObservable<T> what IQueryable<T> is to IEnumerable<T>. This interface allows you to construct expression trees to describe the observable sequence you want and possibly serialise it and send that to a server to provide you with specific data you want. This is similar to what LINQ-to-SQL does but for IQbservable<T> it would be push based not pull based.
For an in-depth introduction you could see the Introduction to Rx
http://leecampbell.blogspot.com/2010/08/reactive-extensions-for-net.html
The Rx Forums also has a post that contains the definitive list of Rx resources
http://social.msdn.microsoft.com/Forums/en-US/rx/thread/2cbd3b1c-d535-46ba-a9cf-3cd576a8e7c2
Further experimental Rx documentation can be found at
http://msdn.microsoft.com/en-us/library/hh242985(v=VS.103).aspx
I hope this helps
Lee Campbell
(excuse the formating, this is the 5th attempt to get MSDN to format this properly)