Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/03/2008, 07:25
Avatar de pragone
pragone
 
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 17 años
Puntos: 2
Pregunta Opiniones sobre el patrón de Invocación Implicita

Hola,

En estos días estaba pensando en un proyecto y no veía de forma clara cuál era la mejor forma de atacarlo... así que me fui a revisar los conceptos de arquitectura de software en la wiki y me encontré de nuevo con el patrón de invocación implícita.

Este patrón, también conocido como orientado a eventos, funciona de forma diferente a los patrones comunes en el sentido de que las acciones de los usuarios generan eventos no acciones, y luego tienes a "listeners" que se interesan por ciertos eventos y realizan sus acciones dependiendo del evento.
Es un estilo bastante común en desarrollo de aplicaciones stand-alone.

Me han parecido muy interesantes las bondades que un esquema así podría tener para el desarrollo evolutivo de un producto. El hecho de que añadir funcionalidades puede significar no tener que tocar el código que ya tienes resulta muy atractivo.

Un ejemplo de esto:
La página que recibe los datos para agregar un registro a un BD.
Bajo un modelo MVC tradicional la petición del navegador se enruta a una acción. Esta acción hace sus validaciones, invoca a la capa de BD y luego deja el trabajo a la capa View para que de la confirmación.

Bajo un modelo orientado a eventos la petición del navegador llega igualmenta a un controlador que la enruta a un evento. El evento es agregado a la cola de eventos y el listener que se interesa por ese evento es invocado. Luego de que este listener hace sus validaciones e ingresa el registro, lanza otro evento: "Registro Agregado". Este evento es "escuchado" por otro listener que es el que presenta la confirmación.

Ambos hacen lo mismo, sin embargo, aquí es donde veo lo interesante. Queremos agregarle la funcionalidad de que se envíe un correo al "dueño" del sistema notificándole la agregación del registro.
En el modelo MVC tradicional esto implica modificar la acción para que adicionalmente se ejecute el código que registra/envía el correo.
En el modelo basado en eventos, basta con crear otro "listener" que se interese por el evento "Registro Agregado" y que se encargue de enviar el correo.

¿La diferencia?, en el segundo caso no hemos tenido que tocar código ya existente y que bien podría introducir nuevos "bugs",

Más aún, Si en el primer caso queremos deshabilitar el envío de correos temporalmente tendríamos que programar un interruptor para esta funcionalidad, en el caso de orientado a eventos basta con des-registrar el listener (un archivo de configuración).

He buscado un framework que me permita desarrollar bajo este patrón en PHP y no lo he conseguido así que:

¿Alguien conoce un framework PHP que funcione bajo un patrón de invocación implicita o orientado a eventos?

Yo ya he comenzado a trabajar en uno... es un híbrido entre MVC y orientado a eventos... y ya tengo una versión mejorada del "hola mundo" funcionando
__________________
pragone
Blog: Desarrollo, comunidad y monetización
Últimos artículos: Tips de Smarty