Skip to content

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.NET

Reactive FTW

Reactive 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...

Code screenshot from the first chapter
Rx.NET 's key types, IObservable<T> and IObserver<T> in action.
What if you want to represent the arrival of new orders?
Or measurements from a sensor?
Or changes in the price of a financial instrument?


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.

Read Introduction to Rx.NET

Screenshot of the ebook, purple with a lizard graphic on it

RX.NET History

There have been several attempts over the years to create reactive programming systems.

Rx.NET originated back in 2008 in the Cloud Programmability team at Microsoft.

They had been tasked with anticipating how developers' needs would change when moving to cloud-based architectures.

Microsoft put considerable effort into developing and verifying the theory that underpins Rx's operation (work that also fed into its LINQ project).

The Rx model is widely used in JavaScript today (RxJs).

The Rx.NET libraries were one of the earliest Microsoft projects to be open sourced.

This has enabled them to continue to evolve even though there has been no Rx.NET team at Microsoft for many years.

In 2023 endjin became maintainers.