Nuestra necesidad
Durante los últimos meses estamos implantando internamente nuevas aplicaciones desarrolladas en Velneo. Por otro lado necesitamos conectarlas con otras aplicaciones de terceros que usamos en diferentes departamentos ( Google Apps, WordPress, Twitter, Zendesk, etc ).
Esta situación nos obligaba a marcar una estrategia de futuro en la comunicación entre aplicaciones.
Debíamos buscar una forma de comunicar cualquier aplicación entre sí, da igual si está en web, en escritorio o en móvil. Buscábamos un solo idioma para que se comuniquen nuestras aplicaciones.
Idioma elegido
Después de evaluar las opciones existentes todas nos llevan hacia las siglas REST / JSON
Al ser un servicio tipo REST tenemos la garantía de que funcionaremos sobre HTTP/HTTPS con todas las ventajas que ello conlleva.
Nos decantamos por JSON respecto a XML por varios motivos :
- Es muy sencillo y ligero
- Fácilmente legible por máquinas y humanos 😉
- Parece el estándar del futuro para comunicación de aplicaciones (WordPress, Google Glass, Zendesk, Twitter )
Como creamos nuestro API
Lo primero que debíamos hacer era crear un API que permitiera que otras aplicaciones consumieran nuestras aplicaciones, para ello con el vJavascript de Velneo creamos una aplicación capaz de generar de forma dinámica todo el API en base a un proyecto de Velneo. Esta aplicación no solo nos genera los puntos de acceso, sino una web dinámica con toda la documentación del API
Para darle salida a la aplicación usamos el componente vModApache y configuramos el Apache para añadirle cache, compresión y encriptación.
Con este proyecto, cualquiera de nuestras aplicaciones de Velneo V7 tenían un API dinámico en base a las tablas y búsquedas ya creadas.
Como consumimos nuestro API
Necesitábamos obtener información de nuestras aplicaciones, en unos casos que Google Apps pudiera obtener diferente información de nuestro vERP, para ello desarrollamos scripts en Google Apps Script que acceden a nuestro API y le consultan la información que necesita. El resultado devuelto en JSON se procesa de una forma muy sencilla y se realizan las operaciones necesarias.
Por otro lado nuestra web necesitaba mostrar información privada en los sitios que funcionan con WordPress. Desarrollamos un plugin en PHP que se conectaba a nuestro API para obtener información y mostrarla al visitante.
Desde los centros de soporte en Zendesk se consulta nuestro API para mostrar información de nuestro vERP en tiempo real
Desde Google Script se generan emails con los indicadores clave de la empresa calculados en diferentes aplicaciones
Que más cosas
Existen cientos de servicios web que ofrecen funcionalidades mediante sus APIs REST JSON
Nuestra idea es comunicar toda esta «nube» de aplicaciones con un mismo idioma, lo que nos permite ser más ágiles en cuanto a la implementación y mantenimiento de nuevos servicios.
Hola David
Seguro que tenéis un buen motivo que se me escapa, por eso te pregunto.
¿No sería mucho mas fácil para todos poder llamar directamente a esa api y que devuelva el json?
Si ya tenemos un puerto abierto al que conectarnos para ejecutar una función remota, que hay de malo en conectarse a ese puerto para que nos devuelva una cadena json? Para vosotros solo implicaría habilitar esa posibilidad, y para los programadores e implantadores implica no tener que instalar y configurar apache y vModApache, (que por cierto sigue siendo beta).
Por otra parte apache y vModApache están muy bien y son muy potentes, ¿pero todo esto para devolver cadenas de texto? no lo veo claro….
Usar apache solo tiene sentido si se le va a sacar partido a todas sus funcionalidades, pero para servir cadenas de texto se hace con un script de 10 lineas que no consume recursos y no necesita configuraciones.
Un saludo
Hola Ricardo
Efectivamente existe la posibilidad de abrir un puerto TCP y hacer un servidor web dentro de Velneo con el objeto TCP, el proyecto cirrus.js (https://github.com/Heavyblade/cirrus ) es un gran ejemplo
En nuestro caso, necesitábamos algunas cosas más…
– Nuestro API debe ser HTTPS
– El contenido debe ir comprimido. Hay algunas respuestas JSON con cientos de registros que van mejor comprimidas
– Algunas peticiones se repiten constantemente, con lo que la cache de Apache quita trabajo al vServer.
– Quitarle trabajo innecesario al servidor. El API es consultado por muchas aplicaciones distintas y no queríamos que el vServer estuviera «ocupandose» de tareas que puede hacer uno o varios vModApache
– Un ataque de peticiones al Apache es totalmente transparente para el vServer.
– El API también devuelve ficheros .pdf creados en el momento ( con vJavascript ) desde el propio módulo de Apache y luego servidos como cualquier otro fichero.
La ventaja de Velneo es que se pueden hacer las cosas de distintas formas, en cada caso una es mejor que otra. Para nuestras necesidades esta configuración ha sido la más óptima y sencilla.
Hola David:
Para mi la pregunta es evidente… ¿Abriréis estas APIs a la comunidad, o cada uno seguiremos reiventando la rueda por nuestra cuenta?
Un saludo.
Hola Luis
No hay ningún API que abrir. Son simplemente unos objetos de V7 creados con vJavascript.
Si genera interés no tengo problema en publicarlo como OpenApp.
Pues una openapp sería fantástico para ver ejemplos en producción.
Saludos