# JavaScript Client Communication

JCC, sigla de JavaScript Client Communication hace referencia a las técnicas de programación que, utilizando objetos JSI en el navegador (en el lado cliente y no en el servidor), facilitan la integración en la misma página Web de aplicaciones y servicios a priori independientes. Como AJAX o Web 2.0, JCC no constituye una tecnología nueva en sí misma, sino que es un término que referencia a determinada técnica de programación basada en JavaScript.

## Introducción

Desde siempre ha sido deseable la posibilidad de poder crear cualquier servicio o aplicación reutilizando la funcionalidad de servicios ya existentes. Esta necesidad de reutilización también se encuentra (y cada vez con más urgencia) en los servicios y aplicaciones para el usuario final disponibles en Internet. En el caso de Internet sería incluso deseable que este nivel de integración o reutilización se pudiera aplicar directamente a las Interfaces de Usuario mostradas en los navegadores, consiguiendo por tanto una reutilización directa de los servicios en la parte cliente. Este nivel de reutilización a su vez permitiría una comunicación directa de los servicios en el cliente (navegador). Y sin la necesidad de la comunicación Máquina-Máquina entre servidores, se estarían optimizando recursos como el tráfico en la red, los tiempos de espera, la potencia de cálculo, etc. A las técnicas de programación en el navegador que implementan este tipo de integración nos referiremos como JavaScript Client Communication (JCC).

## Objetivos

Tradicionalmente, las páginas de servicios y aplicaciones disponibles en la Web que ofrecían acceso a la funcionalidad o información de distintos servidores, o bien ‘incrustaban’ trozos de otras páginas/aplicaciones sin interaccionar con ellos (banners estáticos, portlets, etc.), o bien abordaban la integración mediante la comunicación directa de los servidores, es decir, el servidor de la aplicación principal establece una comunicación M-M con los servidores de cada servicio que se integra para recoger información (esto requiere protocolos de comunicación y un tráfico de red M-M adicional) y crea toda la Interfaz de Usuario de manera unificada, pudiendo incluir incluso la de los servicios que se están integrando. De esta forma, se vuelven a crear unas Interfaces de Usuario que posiblemente ya existen, lo que implica una reinvención continua de la rueda.
Para conseguir una reutilización de servicios en el navegador debe existir un mecanismo que permita la comunicación y el intercambio de información de los servicios directamente en el navegador (parte cliente), sin necesidad de una comunicación entre servidores. Este mecanismo de comunicación es lo que resuelve JCC:
* La aplicación reutiliza de forma directa la Interfaz de Usuario de cada servicio integrado. El usuario recibe de forma transparente una IU compuesta por partes provenientes de distintos servicios. Ya no es prioritaria (ni tan siquiera necesaria) una comunicación M-M entre servidores. Se disminuye el tráfico de red originado por los protocolos M-M.
* Los servicios se comunican entre sí directamente en el lado del cliente. Se traslada al cliente parte de la potencia de cálculo, liberando recursos en los servidores.

## Descripción

En JCC la comunicación entre servicios integrados en una misma página Web se resuelve utilizando objetos JSI (JavaScript Shared Interfaces). Estos objetos son una modelización conceptual de APIs programadas en Javascript. Cada servicio implementa una API de este tipo (un JSI) publicando las acciones/operaciones que permite que realicen en el componente que controla otros componentes (controlados a su vez por otros JSI) que se sindicarían. Estas JSI, combinadas con la filosofía ya consolidada de despliegue de Web Services y la aplicación de las últimas técnicas respecto a creación de Aplicaciones Web como AJAX, REST, XML-RPC, SOAP, etc., dotan a las aplicaciones y servicios disponibles en la red de una potencia hasta ahora desconocida, aligerando el peso de las interfaces y mejorando notablemente la usabilidad de las interfaces Web. Contando con que el uso de JCC potenciaría el concepto de creación de sitios web mediante partes de otros sitios (sindicación de contenidos), se podría decir que estaría encuadrada dentro de las nuevas tendencias de la Web 2.0.

## Aplicaciones que usan JCC

De la misma manera que Google es uno de los grandes responsables de la popularización de AJAX, ofrece APIS Javascript que permiten la utilización de los controles de Google Maps. También Yahoo! publica APIs de este tipo en alguno de sus servicios. Ambos casos suponen la utilización de objetos JSI.

## Resumen

La aplicación de JCC proporcionará una serie de beneficios adicionales al evidente de compartición de interfaces Web interactivas entre distintas aplicaciones, como: reducir la prioridad de la comunicación M-M entre servidores, reducir el tráfico en la red, reducir la necesidad de protocolos adicionales, potenciar el cálculo en el cliente para liberar servidores y liberar recursos. Aumentar la potencia de la reutilización, el nivel de abstracción o la transparencia al integrar servicios de terceros disminuirán las diferencias entre los distintos sites dotando a cualquiera que utilice JSIs de una potencia de integración de funcionalidad en sus sites hasta ahora desconocida, incidiendo además en una disminución de costes consecuencia de la reutilización de componentes.
* Datos: Q16581036