Reactive Extensions: Renaissance eines Programmiermodells

Das Konzept des Reactive Programming ist seit geraumer Zeit in aller Munde. Microsofts Rx-Bibliothek, die für viele Plattformen und Programmiersprachen verfügbar ist, setzt das Prinzip konsequent um.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen
Reactive Extensions: Renaissance eines Programmiermodells
Lesezeit: 10 Min.
Von
  • Marko Beelmann
Inhaltsverzeichnis

Reactive Programming ist eher eine Renaissance als eine Revolution, denn das Konzept ist nicht unbedingt neu. Die Entwicklung von Libraries wie Reactive Extensions https://github.com/Reactive-Extensions (Rx) oder auch die Verbreitung des Aktorenmodels haben das Konzept aufgegriffen und so den Bekanntheitsgrad deutlich erhöht. Aber vor allem die Verwendung von RxJS als Teil von Angular 2 hat für eine Steigerung der Popularität gesorgt.

Der Artikel geht auf die Grundkonzepte von Rx und deren praktische Anwendung ein. Sehr theoretische und mathematische Aspekte wie Monaden beleuchtet er dagen nicht näher, da das Verständnis für die regelmäßige Nutzung im Vordergrund steht.

Rx kommen aus dem Hause Microsoft: Das Cloud Programmability Team hat die Erweiterungen entwickelt. Unter der Federführung von Eric Meijer, der auch maßgeblich an der Entwicklung von LINQ beteiligt war, tauchten um 2006 die ersten Versionen der Libraries im Internet auf. Die ursprünglich für .NET/C# entwickelte Bibliothek ist heute eine von vielen, denn mittlerweile gibt es Rx für zahlreiche Sprachen und Plattformen. Vor allem hat sich das einheitliche asynchrone Programmiermodell – auch über Sprachen hinweg – bei vielen Entwicklern durchgesetzt.

Zum ersten produktiven Einsatz kam die Bibliothek mit der Veröffentlichung von Windows Phone. Alle hauseigenen Rx-Varianten hat Microsoft als Open Source veröffentlicht. Der Quellcode sowie die Dokumentation sind auf den entsprechenden Seiten bei GitHub zu finden.

Mehr Infos

In der Entwicklung von UI-Applikationen ist das reaktive Konzept bereits seit langem verbreitet: Bewegt der Benutzer die Maus in der Applikation, gibt das System die Information über die Bewegungen an die Software weiter. Aus Sicht des Entwicklers kommen die Events asynchron an, und die Anwendung kann entsprechend reagieren. Jede einzelne Mausbewegung wird durch eine entsprechende Koordinate über die Events verteilt. Mit ein bisschen Abstraktion wirken die Events wie ein Array, das aus Mauskoordinaten besteht und dessen Elemente über die Zeit zur Verfügung stehen. Daher werden die Observables, alternativ auch Event Streams genannt, gerne als ein Array über Zeit bezeichnet.