¿Quieres construir una aplicación reactiva? Necesitarás saber acerca de la programación reactiva para hacerlo…
Muchas aplicaciones se basan en tener los flujos de datos correctos que llegan a una aplicación en el momento adecuado, pero qué sucede si esos flujos de datos no llegan cuando los necesitas. La programación reactiva es una forma de evitarlo.
1. Definición
En esencia, la programación reactiva es una forma de desarrollar aplicaciones que se estructuran en torno a estos flujos de datos asincrónicos. Esto se hace para mejorar la experiencia del usuario.
La programación reactiva se hace para que las aplicaciones sean más receptivas. No deseas que se congele una aplicación mientras esperas que un flujo de datos en particular se conecte.
Los flujos de datos transportarán eventos, mensajes, llamadas e incluso fallas. La programación reactiva significa que cuando ve estos flujos, la aplicación puede reaccionar ante ellas utilizando una caja de herramientas para filtrar, crear, transformar y conectar cualquiera de esos flujos.
El código dentro de una aplicación reactiva crea flujos de datos de cualquier cosa y desde cualquier cosa, como solicitudes HTTP, mensajes, notificaciones, cambios a variables, eventos de caché, medidas de sensores y clics. Cuando esto sucede, la aplicación se vuelve intrínsecamente asincrónica.
La programación reactiva puede convertir casi cualquier cosa en un flujo para administrar de forma asíncrona. También facilita la tarea de manejo de errores y hace que el código sea más flexible, legible, compatible y fácil de escribir.
2. Los cuatro principios de la programación reactiva
Hay cuatro principios a seguir al crear aplicaciones reactivas.
- Primero, una aplicación responsive es el objetivo principal. Debería ser rápido en reaccionar a todos los usuarios.
- En segundo lugar, debe ser resiliente. Esto significa que debe aplicar principios de diseño y arquitectura adecuados para garantizar la capacidad de respuesta en todas las condiciones.
- En tercer lugar, debe ser escalable. Es decir, debería ser fácil de actualizar bajo demanda para garantizar la capacidad de respuesta bajo numerosas condiciones de carga.
- Por último, la base de un sistema escalable, resiliente y responsive es su arquitectura controlada por mensajes. Una aplicación controlada por mensajes puede ser controlada por eventos, controlada en actores o ambas.
3. Extensiones Reactivas
La programación reactiva como concepto ha existido por más de 20 años, pero no despegó hasta la introducción de las extensiones reactivas. Las extensiones reactivas (también conocidas como ReactiveX/Rx) son API o programación asincrónica con flujos observables. Así es como funciona la programación reactiva.
ReactiveX tiene dos clases; clases observables y observadoras. Una clase observable es la fuente de datos de flujos o eventos y una clase de observador es la que usa (o reacciona) los elementos producidos.
Un observable puede tener varios observadores, por lo que cada observador recibirá cada elemento de datos producido. En ReactiveX un observador se suscribe a un observable. Un observable entonces produce flujos de datos que el observador escucha y reacciona. Esto desencadena una serie de operaciones en un flujo de datos.
Un sujeto es una extensión observable que también implementa una interfaz de observador. Esto significa que los sujetos pueden actuar como observadores y observables.
También podemos aplicar operadores a un flujo. Estos definen cómo y cuándo los observables deberían producir flujos. La mayoría de los operadores ejecutan funciones en un observable y devuelve un observable.