Next: Proactor
Up: Patrones de diseño para
Previous: Patrones de diseño para
El patrón reactor es conocido también como dispatcher
o notifier.
Se usa cuando una aplicación
- que gestióna eventos
- debe reaccionar a varias peticiones cuasi simultaneamente
- pero los procesa de modo síncrono y en el orden de llegada.
Ejemplos:
- servidores con multiples clientes
- interfaces al usuario con varios fuentes de eventos
- servicio de transacciones
- centralita
Comportamiento exigido:
- la aplicación no debe bloquear innecesariamente otras peticiones
mientras se está gestionando una petición.
- debe ser fácil incorporar nuevos tipos de eventos y peticiones
- la sincronización debe ser escondida para facilitar la implementación
de la aplicación
Posible solución:
- se espera en un bucle central a todos los eventos que puedan llegar
- una vez recibido un evento se traslada su procesamiento a un gestor
específico de dicho tipo de evento
- el reactor permite anadir/quitar gestores para eventos
Detalles de la implementación:
- Bajo Unix y (parcialmente) bajo windows se puede aprovechar de la
función select() para el bucle central.
- Si los gestores de eventos son procesos independientes hay que
evitar posibles interbloqueos o estados erroneos si varios gestores
trabajan con un estado común.
- Se puede aprovechar del propio mecanismo de gestionar eventos para
lanzar eventos que provoquen que el propio reactor cambie
su estado.
- Java no dispone de un mecanismo apropriado como el select().
Next: Proactor
Up: Patrones de diseño para
Previous: Patrones de diseño para
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática