Reactive programming model

Simply put, reactive programming is nothing but programming with asynchronous data streams. By applying various operations on stream, we can achieve different computational goals. The primary task in a reactive program is to convert the data into streams, regardless of what the source of the data is. While writing modern graphical user interface applications, we process mouse move-and-click events. Currently, most systems get a callback, and process these events as and when they happen. Most of the time, the handler does a series of filtering operations before it invokes the action methods associated with the event calls.

In this particular context, reactive programming helps us in aggregating the mouse move-and-click events into a collection, and sets filters on them before notifying the handler logic. In this way, the application/handler logic does not get executed unnecessarily.

Stream-processing model is well known, and it is very easy to encode by application developers. Pretty much anything can be converted into a stream. Such candidates include messages, logs, properties, twitter feeds, blog posts, RSS feeds, and so on. Functional programming techniques are really good at processing streams. A language like C#, with its inherent support for functional programming idioms, becomes a natural choice for writing reactive programs.

The basic idea behind reactive programming is that there are certain datatypes that represent a value over time. These datatypes (or rather data sequences) are represented as observable sequences in this programming paradigm. Computations that involve these changing (time dependent) values will, in turn, themselves have values that change over time, and would need to asynchronously receive notifications (as and when the dependent data changes). Remember the spreadsheet application discussed earlier?

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

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