Reactive programming provides clarity when our code needs to respond to events. The Rx.NET libraries (150m+ downloads) were designed to enable cloud-native applications to process live data in reliable, predictable ways.
This book explains the vital abstractions that underpin Rx, and shows how to exploit the powerful and extensive functionality built into the Rx.NET libraries.
Read Introduction to Rx.NETReactive programming is a useful concept in any program that has to deal with things happening.
Programming languages typically provide a wide range of tools for dealing with the kind of data that can sit in a database — what we might call data at rest.
Almost all languages provide built-in abstractions for dealing with tables of information (e.g. arrays), and associations (e.g., dictionaries). But...
If our systems need to react to events of interest, it is typically much less obvious how to model this in code than it is to represent data that already exists.
C# (and other .NET languages) go a little way towards solving this by making events a language feature, but these are quite limited in practice.
Although message queueing and event streaming could handle conveying notifications, the lack of a good programming abstraction was a problem.
Rx.NET was invented to fill this gap. This book explains the abstractions that underpin Rx, and the functionality built into the Rx.NET libraries.
There have been several attempts over the years to create reactive programming systems.