Posts Tagged ‘event-driven’

Programación orientada a eventos (event-driven, event oriented programming)

Miércoles, septiembre 8th, 2010

He estado revisando un tema interesante de programación orientada a eventos y me he animado a compartirles un poco de lo que he leído.

Para empezar: ¿Qué es un evento?
Un evento es una ocurrencia dentro de un determinado sistema o dominio, es
algo que ha ocurrido o que se contempla que va a ocurrir en ese
dominio. El término evento también se usa cuando una entidad de programación representa
una ocurrencia en un sistema de cómputo.

Comportamiento manejado por eventos (Event-Driven behavior) en la vida cotidiana
El concepto de evento es simple pero poderoso. Suponga que usted está trabajando en su computadora portátil en
una cafetería, desde que ha entrado a esta cafetería han sucedido varias cosas:

  • La gente ha entrado y salido.
  • Has pedido un café.
  • La camarera te ha traído el café.

Estas son acontecimientos, pero ninguno de ellos es particularmente emocionante. Imagina ahora:

  • Un ladrón entra a la cafetería.
  • El ladrón exige el dinero de la gente.
  • La camarera te ha traído el café.

Esto perturbaría la atmósfera pacífica y obliga a la gente a reaccionar. Supongamos que alguien da
sus pertenencias al ladrón, lo que provoca más eventos, después de recuperarse del shock:

  • La víctima llama a las compañías de tarjetas de crédito para cancelar sus tarjetas de crédito robadas.

Que a su vez esto daría lugar a nuevas actividades.

En resumen, todo lo ocurrido, emocionante o no, puede ser visto como una ocurrencia, es decir un evento.

Tipos de Eventos

Los eventos pueden ser síncronos o asíncronos.

Evento Síncrono:
Estamos tratando con un evento síncrono si es necesario esperar una respuesta inmediatamente después de lanzado el evento.

  • Pago el café y espero a que me lo entreguen.

Evento Asíncrono
En este caso no es necesario esperar inmediatamente una respuesta, la respuesta puede llegar después, en un tiempo indeterminado.

  • Pago el café y me voy a la mesa, a que me lo lleven.

Actores en un evento
En un sistema que administra eventos tenemos:

  • Productores de eventos,
  • Consumidores, y
  • El componente que resuelve la lógica del procesamiento de los eventos.

Categorías de las aplicaciones que procesan eventos

Razones para el uso de un procesamiento de eventos
Una pregunta que podría plantearse es por qué desea utilizar un procesamiento de eventos.
He aquí algunas razones:

  • La aplicación podría estar centrada en eventos de forma natural.
    En este caso la aplicación tiene sensores que detectan y reportan eventos,
    y la razón de ser de la aplicación es analizar y reaccionar a estos acontecimientos.
  • La aplicación necesita identificar y reaccionar ante determinadas situaciones (
    buenas o malas) a medida que ocurren. Un enfoque orientado a eventos, donde los cambios en el estado
    se monitorean a medida que ocurren, permite que la aplicación responda de manera más
    oportuna que un enfoque en segundo plano cuando el proceso de detección sólo se ejecuta
    de manera intermitente.
  • El procesamiento de eventos pueden dar una forma de extender una aplicación ya existente de una
    manera flexible, no invasiva. En lugar de modificar la aplicación inicial para
    agregar funciones adicionales, a veces es posible modificar la aplicación original
    mediante la adición de productores de eventos a la misma (por ejemplo, al procesar el archivo de logs
    que se produce). La funcionalidad adicional puede ser implementada
    procesando los eventos generados por estos productores de eventos.
  • La lógica para el procesamiento de eventos se puede separar del resto de la
    aplicación. Esto permite que la aplicación se adapte rápidamente para satisfacer los nuevos
    requerimientos de negocio, a veces adaptada por los mismos usuarios de las aplicaciones de negocio.
  • La aplicación podría implicar el análisis de una gran cantidad de datos con el fin de
    proporcionar una salida a ser entregada a un usuario humano u otra aplicación. Los datos
    se pueden organizar en un flujo de sucesos que luego son distribuidos a múltiples
    nodos de cómputo que permite separar las partes del análisis que se realice
    en paralelo.
  • Hay beneficios potenciales en la escalabilidad y la tolerancia a fallos que se pueden obtener
    mediante el uso de
    un enfoque orientado a eventos. Un enfoque orientado a eventos permite sucesos que se
    realizan de forma asincrónica, por lo que es ideal para aplicaciones donde los eventos
    suceden de forma irregular.

Espero esta información les sea de utilidad.
Para más información pueden revisar los siguientes libros:

  • Event Processing in Action:
    Opher Etzion, Peter Niblett.
    Ed. Manning
    ISBN: 9781935182214
  • Event-Based Programming. Taking Events to the Limit:
    Ted Faison.
    Ed. Apress.
    ISBN-13: 978-1-59059-643-2
    ISBN-10: 1-59059-643-9

Y un enlace interesante es: