Reactive applications are responsive to change, fault tolerant, self-healing, and scalable in the cloud. They’re designed to handle millisecond response times reliably in complex multi-node applications processing information for web and mobile clients, hybrid cloud deployments, and petabytes of data. Using loosely-coupled components that communicate via asynchronous messaging.
Introduction to Reactive Programming
For some good general information on Reactive Programming, check out (and sign!) the Reactive Manifesto, and for a bit more detail, have a look at Kevin Webber’s great article at medium.com - What is Reactive Programming?
Microsoft Tools for Reactive Programming
Microsoft has developed several tools to help developers to help get up to speed and excel in building Reactive Applications in the cloud.
Typesafe has extended their Reactive Maps Activator template to Azure, which enables easy deployment of Java-based technologies such as Scala, the Play Framework and the Akka Toolkit on Microsoft Azure. MS Open Tech has also published a tutorial on using the Play Framework with Azure.
Reactive Extensions (Rx) is a programming model that allows developers to use a common interface for writing applications that interact with diverse data sources, like stock quotes, Tweets, UI events, and Web service requests. Since Rx was open-sourced by MS Open Tech in November, 2012, Rx has become an important under-the-hood component of several high-availability multi-platform applications, including NetFlix and GitHub. For a more detailed overview, have a look at the Beginner’s Guide to Reactive Extensions.
- Rx.NET: The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators.
- Rx++: The Reactive Extensions for Native (RxC) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators in both C and C++.
- Interactive Extensions:
- Ix: The Interactive Extensions (Ix) is a .NET library which extends LINQ to Objects to provide many of the operators available in Rx but targeted for IEnumerable<T>.
- Ix++: An implantation of LINQ for Native Developers in C++.
- Tx: a set of code samples showing how to use LINQ to events, such as real-time standing queries and queries on past history from trace and log files, which targets ETW, Windows Event Logs and SQL Server Extended Events.
- LINQ2Charts: an example for Rx bindings. Similar to existing APIs like LINQ to XML, it allows developers to use LINQ to create/change/update charts in an easy way. We would love to see more Rx bindings like this one.
- With these libraries we are giving developers open access to both push-based and pull-based data via LINQ in Microsoft’s three fundamental programming paradigms (native, JScript and Managed code).
Microsoft recently announced that Project Orleans will be open-sourced in early 2015. Project Orleans is a set of libraries and examples for building distributed high-scale computing applications, designed for use in the cloud, and implemented extensively in Microsoft Azure. For more information have a look at the Project Orleans Codeplex site.