# data[].attributes.body
Mashup es una palabra que proviene de un término musical en inglés, que significa la creación de una nueva canción a partir de la mezcla o pedazos de otras canciones. Desde este concepto se basa el mashup de software.

# data[].attributes.body
En el contexto de la ingeniería del software, el termino se define como el resultado de combinar interfaces de usuarios, procesos, servicios, y/o datos para obtener nuevas paginas web, aplicaciones, procesos, o nuevos conjuntos de datos.
La Wikipedia lo define como “una aplicación o sitio web que combina contenido de una o más fuentes dentro de una nueva experiencia de usuario o manejo de información”. Los mashups son un producto de la Web 2.0 donde el usuario es el centro de todo. Va de la mano con conceptos como colaboración y distribución de la información.

# data[].attributes.body
Mucha gente experimenta con mashups usando las API de Amazon, eBay, Flickr, Google, Microsoft, Yahoo o YouTube; lo que ha llevado a la creación de un editor mashup.

La arquitectura de los mashups está siempre compuesta de tres partes:

1. El proveedor de contenidos: fuente de los datos. Los datos están disponibles vía una API y diferentes protocolos web como RSS, REST y Web Servicie.

2. El sitio mashup: es la nueva aplicación web que provee un nuevo servicio utilizando diferente información y de la que no es dueña.

3. El navegador web cliente: es la interfaz de usuario del mashup. En una aplicación web, el contenido puede ser mezclado por los web browser clientes usando lenguaje web del lado del cliente, por ejemplo, JavaScript.

# data[].attributes.body
Las características que podemos encontrar son:
> Hecho por el usuario para él y compartirlo con más usuarios.
> Capacidad dinámica de compartir e integrar de la misma manera con otras fuentes.
> Utilización tanto de servicios Web públicos, así como servicios internos.
> Orientado hacia la empresa, sus clientes y aliados de negocio.

# data[].attributes.body
¿Qué no es un mashup?
Antes de continuar, debemos aclarar dos concepciones erróneas que tienden a existir relacionadas con los mashups. La primera es que un mashup no es un portal. Sin embargo, un portal puede complementarse por un mashup y viceversa.

La segunda aclaración es que un mashup tampoco es una aplicación compuesta (composite application). El término composite application se utiliza para referirse a aplicaciones que en lugar de ser desarrolladas desde cero, son “ensambladas” a partir de servicios disponibles en una arquitectura SOA. Este concepto puede parecer muy similar al de un mashup, sin embargo hay una diferencia crucial: las composite applications parten de un enfoque centrado en TI, mientras que los mashups parten de un enfoque centrado en el usuario. Bajo el modelo de las composite applications, el usuario final sigue dependiendo del departamento de TI para crear una aplicación (aunque ésta solamente se vaya a ensamblar, no a crear). En cambio, con los mashups el objetivo es que sean los usuarios quienes puedan crear (o ensamblar) sus aplicaciones.

# data[].attributes.body
Los mashups se presentan actualmente en tres formas: mashups de consumidores, mashups de datos y mashups empresariales.

El tipo más conocido es el de mashup de consumidores, que está muy bien ejemplificado por muchas aplicaciones que utilizan Google Maps. Los mashups de este tipo combinan datos de fuentes varias, ocultando este hecho tras una interfaz gráfica simple.

Un mashup de negocio es una combinación de todo lo anterior, enfocada en la agregación de datos y la presentación y agregando además una funcionalidad colaborativa, haciendo que el resultado final sea una aplicación de negocio apropiada.

Mashups dentro de mashups son conocidos como “mashups monstruos”.

Es importante reconocer que los mashups ayudan o facilitan la integración de aplicaciones orientadas a arquitecturas SOA( es un estilo de arquitectura de TI que se apoya en la orientación a servicios. La orientación a servicios es una forma de pensar en servicios, su construcción y sus resultados. Un servicio es una representación lógica de una actividad de negocio que tiene un resultado de negocio específico (ejemplo: comprobar el crédito de un cliente, obtener datos de clima, consolidar reportes de perforación)).

# data[].attributes.headline
Mashup -  Orientado hacia el navegador (browser).

# data[].attributes.subject
Mashup -  Orientado hacia el navegador (browser).

# data[].attributes.body
Orientado hacia el navegador (browser). Está más enfocado en la mezcla o composición de información con imágenes del lado del navegador, principalmente usando Java-Script como lenguaje de programación para lograrlo.

Un ejemplo clásico de este tipo de mashup es aquél en que se usa el servicio de Google Maps, con otro servicio, por ejemplo: de precios de casas que muestre en una sola pantalla el precio y la ubicación donde se encuentra una casa en venta.

# data[].attributes.headline
Mashup - Orientado hacia el servidor (mashup empresarial).

# data[].attributes.subject
Mashup - Orientado hacia el servidor (mashup empresarial).

# data[].attributes.body
Orientado hacia el servidor (mashup empresarial). En éste, la integración y manipulación de la información suceden en ambos lados: servidor y navegador. Su uso principal es interactuar con información de diferentes sistemas para generar vistas necesarias para la toma de decisiones. Este tipo de mashup es capaz de interactuar con data centers para generar valor .

# data[].attributes.body
Estas son algunas de las acciones más comunes que se pueden realizar con un mashup empresarial:

1. Filtrar información: en ocasiones un servicio regresa información necesaria para construir una vista y por lo mismo es requerido aplicar un filtro para trabajar con la información necesaria.

2. Conjuntar y unir diversos tipos de servicios de información: con esto nos referimos a la virtualización de los servicios para abstraer la complejidad de consultar o ejecutar operaciones en diversas fuentes de información, como pueden ser base de datos, WSDLs, RSS, etcétera.

3. Analizar información resultante de servicios: tener la capacidad para aplicar funciones estadísticas como matemáticas, a los resultados de los servicios invocados. (Vgr. Tomar la información de un servicio que nos da precios de acciones y al resultado de la ejecución de ese servicio poder aplicar una función matemática que nos da el precio máximo de esa acción durante un tiempo determinado).

4. Transformar información: soportar tanto estructuras diferentes de información así como formatos diversos.

5. Soporte gráfico de información: presentar al usuario final la información a través de tablas, calendarios, gráficos, etcétera.

6. Orquestación de servicios: un mashup puede crearse a partir de la ejecución secuencial o en paralelo de varios servicios para la generación de la vista final. Un ejemplo: generar un mashup de la situación financiera de una persona. Por lo mismo necesitamos conectarnos al banco con un servicio “Y” que nos da la información básica de ésta, como sus cuentas y de qué tipo son. Con dicha información, se hace una consulta para conocer cuál es su calificación en el buró de crédito y de ahí generar una vista final.

# data[].attributes.body
Ya definidas las cualidades y funcionalidades de un mashup empresarial, veamos la arquitectura de sus componentes, para así, entender cómo se integran la funcionalidad y los servicios antes mencionados. La figura muestra el ejemplo de una arquitectura para mashups. En este caso, utilizamos como referencia la plataforma Presto de JackBe. ( Ver Figura. "Arquitectura para mashups Presto" ).

# data[].attributes.headline
Figura "Arquitectura para mashups Presto"

# data[].attributes.subject
Figura "Arquitectura para mashups Presto"

# data[].attributes.body
En este diagrama se puede ver que el mashup empresarial debe ser capaz de conectarse a cualquier fuente de información (base de datos, servicios Web, objetos Java o .Net) a través del concepto “virtualización de servicios”. De esta forma, las diferentes fuentes de información hacen la base de una estructura fuerte para poder integrar, orquestar, mezclar, transformar y visualizar nuevos servicios.