Las plataformas de Mashup proporcionan cada vez más funcionalidades de ejecución a los gadgets que albergan. Es necesario diseñar un mecanismo de interconexión que permitan a los desarrolladores de gadgets explotar las capacidades de cada plataforma. A falta de un estándar que se imponga con claridad, estos mecanismos son particulares para cada plataforma, ligando en mayor o menor medida los desarrollos de los gadgets a los diferentes entornos.
La plataforma EzWeb propone un mecanismo de intercomunicación altamente flexible, que permite a los gadgets adaptarse a las capacidades cambiantes y en constante evolución de la plataforma, sin necesidad de reprogramar el código de los gadgets. Para conseguir esto se ha implementado un mecanismo basado en la utilización de flujos de datos genéricos, que son ligados dinámicamente a aspectos implementados dentro de la plataforma. Estos aspectos representan el conjunto de funcionalidades cruzadas (cross-cutting), que la plataforma expone para ser utilizadas y dar soporte al desarrollo de los gadgets. Actualmente disponemos de los siguientes aspectos:
- Propiedad: Permite el almacenamiento persistente
- Evento: Habilita la gestión de la publicación de eventos
- Ranura: Habilita la gestión de la suscripción a eventos
- Preferencia: Habilita la gestión de la interfaz de configuración de usuario
- Contexto: Permite acceder a información del delivery-context (de usuario, plataforma o gadget)
La inclusión de estos aspectos, desde el punto de vista de los programadores, dentro del código de los gadgets es simple. El programador puede definir flujos de datos: bien de sólo lectura, bien de lectura y escritura, mediante una clase que presenta una interfaz basada en un getter, un setter y una función de callback a invocar por el sistema, a modo de manejador, cuando el valor de un flujo concreto se ve modificado desde el exterior. A este nivel el programador sólo necesita trabajar con estos conceptos, flujos de entrada y flujos de entrada salida. Estos flujos constituyen en punto de ligadura (Jointpoint) con los aspectos.
La siguiente fase, meramente declarativa, permite asignar a cada uno de estos flujos genéricos los aspectos funcionales que regirán su comportamiento. Esta especialización se realiza en el Template asociado a cada gadget (Información declarativa asociada al despliegue de un gadget). Dependiendo del tipo del flujo se permiten diferentes asignaciones de aspectos, así los Eventos, las Propiedades se consideran aspectos de lectura/escritura, y las Ranuras, las Preferencias de usuario, el Contexto serán de sólo lectura. Una característica importante a tener en cuenta es que todos los aspectos de lectura/escritura son intercambiables entre si, lo mismo ocurre con los de sólo lectura. Es decir un Slot puede ser transformado en Preferencia o un Evento en Propiedad de forma dinámica.
De este modo se proporciona un entorno que permite a los Gadgets adaptarse de forma altamente flexible a las nuevas capacidades que puedan aparecer en la plataforma de mash-up, sin necesidad de cambiar su implementación. Gracias a su simplicidad el mecanismo desarrollado minimiza el acoplamiento entre el código del gadget y las funcionalidades de la plataforma potenciando su utilización por parte de todo tipo de desarrollos no pensados inicialmente para su despliegue en EzWeb.




