Programación Orientada a Eventos
Un evento es cualquier acción o cambio detectado por el sistema que puede generar una reacción.
Una vez que el evento ocurre, no puede ser modificado. Es un hecho histórico.
Pueden ser almacenados indefinidamente para auditoría o procesamiento posterior.
En POE, el evento representa el pasado.
Si un pedido fue "Cancelado", ese evento queda registrado para siempre. No borramos el evento, emitimos uno nuevo de "Corrección".
El Programador maneja el flujo del sistema.
"Haz A, luego B, si pasa X haz C."
El Usuario o Sistema maneja el flujo.
"Estoy esperando... cuando pase X, reacciono con Y."
En sistemas tradicionales, si el componente A llama al B y B falla, A también falla.
Analogía Samsa: Las dependencias rígidas hacen que el sistema sea frágil. Si un receptor se "transforma" o desaparece, el emisor queda bloqueado.
Detecta el cambio y emite el evento.
Controlador que distribuye el evento.
Reaccionan al evento de forma independiente.
| Ventajas | Desventajas |
|---|---|
| Desacoplamiento: Las entidades no necesitan conocerse entre sí. | Performance: El intermediario (Broker) puede añadir latencia. |
| Contexto: Evita entidades "Dios" que manejan todo. | Consistencia Eventual: El cambio no es inmediato en todo el sistema. |
| Escalabilidad: Es fácil añadir nuevos suscriptores sin tocar el código existente. | Complejidad: Es más difícil seguir el flujo lógico del código. |
El objeto donde se originó el evento (ej: un Button).
Define la naturaleza del cambio (Mouse, Key, Action).
Flag que indica si el evento ya fue procesado. Si es true, se detiene.
Lectura recomendada: "Metamorfosis Asincrónica" de Federico Brasburg.
Programación Orientada a Eventos - Conceptos Básicos