Chapter 4. Composing Event-Based Programs Using Reactive Extensions

This chapter deals with Reactive Extensions (Rx). To understand Rx, we will cover the following recipes:

  • Installing Rx
  • Events versus observables
  • Using LINQ to perform queries
  • Using schedulers in Rx
  • Debugging lambda expressions

Introduction

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 on 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. Rx, therefore, brings these data sources together in one interface. In fact, Rx can be thought of as consisting of three sections:

  • Observables: The interface that brings together and represents all these data streams
  • Language-Integrated Query (LINQ): The ability to use LINQ to query these multiple data streams
  • Schedulers: Parametrizing concurrency using schedulers

The question on many minds might be why developers should use (or find use for) Rx. Here are a few examples where Rx are really useful:

  • Creating a search that has an autocomplete function. You don't want the code to perform a search for each value you type into the search area. Rx allows you to throttle the search.
  • Making the UI of your application more responsive.
  • Being notified when data changes instead of having to poll the data for changes. Think of real-time stock prices.

To keep up to date with Rx, you can have a look at the GitHub page: https://github.com/Reactive-Extensions/Rx.NET.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.117.73.127