# Reactive Programming

L'idée du Reactive Programming est d'adopter au maximum une **approche déclarative plutôt qu'impérative.**

Le Reactive Programming permet de **réduire le couplage entre les actions, les données, les traitements et le résultat des traitements**. Cela améliore également la **résilience** et la "**scalability**" de l'architecture.

Le succès de cette approche est fortement lié à l'émergence des **Microservices**, des technologies telles que **Kafka Streams**, en frontend à des frameworks tels qu'Angular et à des plateformes de streaming telles que Netflix.

![Reactive Programming Trends](/files/-LC_0irDhZE5_BCK0Gne)

## The Reactive Manifesto

{% embed url="<https://www.reactivemanifesto.org/>" %}
The Reactive Manifesto
{% endembed %}

<https://www.reactivemanifesto.org/>

## Exemple d'approche impérative

1. Les ordres de virement bancaire sont stockées dans une base de données.
2. &#x20;Un "batch" est lancé chaque soir pour déclencher les virements.
3. Un "batch" est lancé quelques heures plus tard pour notifier les utilisateurs en fonction des résultats stockés par le "batch" précédent.

## Exemple d'approche réactive

1. L'utilisateur s'inscrit aux notifications de virements.
2. Le système de notification est donc inscrit au flux de résultats de traitement de virements.
3. Le flux de résultats de traitement est produit par l'inscription au flux d'ordres de virements.
4. Le flux d'ordres de virements est alimenté par différentes sources.

## ReactiveX

L'implémentation la plus commune des `Observable`s est ReactiveX et elle est disponible dans différents langages : **RxJS**, **RxPython**, **RxJava**, **Rx.NET** etc...

{% embed url="<http://reactivex.io/>" %}

##


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guide-angular.wishtack.io/angular/observables/reactive-programming.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
