Often, during your day-to-day dealings with developing applications in C#, you will have to use asynchronous programming. You might also have to deal with many data sources. Think of a web service that returns the current exchange rates, a Twitter search returning a stream of related data, or even different events generated by multiple computers. Rx provides an elegant solution in the form of the IObserver<T> interface.
You use the IObserver<T> interface to subscribe to the events. Then, the IObservable<T> interface, which maintains a list of IObserver<T> interfaces, will notify them of the change of state. In essence, Rx will stick together multiple data sources (social media, RSS feeds, UI events, and so on) that generate data. ...