Utilizar un web service no es nada complicado y puede aportarnos ventajas a nuestras aplicaciones. Si además desarrollas con Velneo, te será mucho más fácil.Para explicarlo, nos centraremos en el ejemplo de una aplicación para conectarnos a un servicio web del Portal de la Dirección General del Catastro Españoly a un servicio de email márketing denominado E-goi.
¿Qué es un web service?
Un web service es un conjunto de protocolos y estándares para intercambiar datos entre aplicaciones.Aplicaciones desarrolladas en lenguajes de programación diferentes y que son ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos entre ellas.De forma más simple, podemos decir que un web service es una función que diferentes servicios o equipos utilizan, que solo se envían parámetros al servidor (lugar donde está alojado el web service) y que éste responderá a dicha petición.Suelen utilizar para el intercambio de información los protocolos XML, SOAP, WSDL y UDDI. XML es usado para describir los datos, SOAP se ocupa para la transferencia de los datos, WSDL se emplea para describir los servicios disponibles y UDDI se ocupa para conocer cuales son los servicios disponibles.
¿Cuales son sus ventajas?
Son independientes de las aplicaciones. No tienen interfaz GUI. Se comparte la lógica de datos y procesos.Interoperabilidad entre aplicaciones de software independientemente de sus propiedades o de las plataformas sobre las que se instalen.Al ser servicios Web, están basados en estándares y protocolos de texto. Esto hace más fácil acceder a su contenido y entender su funcionamiento.Las especificaciones son gestionadas por una organización abierta (W3C) y se garantiza la interoperabilidad entre aplicaciones.
¿Qué es SOAP?
SOAP (Simple Object Access Protocol) es un protocolo escrito en XML para el intercambio de información entre aplicaciones. Es un formato para enviar mensajes, diseñado especialmente para servir de comunicación en Internet, pudiendo extender los HTTP headers. Es una forma de definir qué información se envía y cómo mediante XML. Es un protocolo para acceder a un Web Service.Ejemplo:
El mensaje SOAP está compuesto por un envelope (sobre), cuya estructura está formada por los siguientes elementos: header (cabecera) y body (cuerpo).
¿Qué es el WSDL?
WSDL (Web Services Description Language) es un lenguaje basado en XML para describir los servicios web y cómo acceder a ellos. Se ocupa de definir los Web Service como colecciones de punto de comunicación (end points) capaces de intercambiar mensajes.La parte WSDL concreta describe el cómo y dónde del servicio:
- Cómo tiene que llamar un cliente al servicio
- Qué protocolo debería usar
- Dónde está disponible el servicio
En el mundo Java podemos pensar en la parte concreta de un WSDL como en la implementación de la parte abstracta, aunque en términos de servicios Web, solamente describe dónde se encuentra dicha implementación para utilizarse.La parte concreta de un WSDL contiene dos componentes principales:
- Información de enlazado (binding) sobre el protocolo a utilizar
- La dirección en donde localizar el servicio
Detalle de los elementos WSDL :
- definitions: Es el elemento raíz y permite especificar el espacio de nombres del documento target namespace, el nombre, y otros prefijos utilizados en el documento WSDL. Un ejemplo de definición de prefijo es: xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/". Este prefijo especifica que todos los elementos dentro del documento de esquemas con el target namespace"http://schemas.xmlsoap.org/wsdl/" tendrán el prefijo wsdl.
- types: Se utiliza para definir los tipos de datos que se intercambiarán en el mensaje. Podemos definir dichos tipos directamente dentro de este elemento, o importar la definición de un fichero de esquema (fichero xsd). La definición de tipos puede verse como las definiciones Java de clase, con variables que pueden ser tipos primitivos o referencias a otras clases u objetos. Los tipos primitivos se definen en los espacios de nombres del Schema y normalmente nos referimos a ellos como built-in types. Éstos incluyen tipos simples tales como string, int, double,...
- message: Define los distintos mensajes que se intercambiaran durante el proceso de invocación del servicio. Se deberán definir los mensajes de entrada y salida para cada operación que ofrezca el servicio. Los mensajes muestran descripciones abstractas de los datos que se van a intercambiar.
- portType: Contiene una colección de una o más operaciones. Para cada operación indica cuáles son los mensajes de entrada y salida, utilizando para ello los mensajes definidos en el apartado anterior. Los portTypes son, por lo tanto, colecciones abstractas de operaciones soportadas por un servicio
- binding: Indica el protocolo de red y el formato de los datos para las operaciones de un portType. Los bindings son definiciones concretas de los portTypes. Un portType puede tener múltiples bindings asociados. El formato de datos utilizado para los mensaje de las operaciones del portType puede ser orientado al documento u orientado a RPC. Si es orientado al documento tanto el mensaje de entrada como el de salida contendrán un documento XML. Si es orientado a RPC el mensaje de entrada contendrá el método invocado y sus parámetros, y el de salida el resultado de invocar dicho método, siguiendo una estructura más restrictiva.
- service: Define el servicio como una colección de elementos port a los que se puede acceder. Un port se define asociando una dirección de red con un binding, de los definidos en el documento. Dicha dirección de red es la dirección (URL) donde el servicio actúa, y por lo tanto, será la dirección a la que las aplicaciones deberán conectarse para acceder al servicio.
¿Qué es REST?
Los servicios Web RESTful (Representational State Transfer Web Services) son adecuados para escenarios de integración básicos ad-hoc. Dichos servicios Web se suelen integrar mejor con HTTP que los servicios basado en SOAP, ya que no requieren mensajes XML o definiciones del servicio en forma de fichero WSDL.Los servicios Web REST utilizan estándares muy conocidos como HTTP, SML, URI, MIME, y tienen una infraestructura "ligera" que permite que los servicios se construyan utilizando herramientas de forma mínima. Gracias a ello, el desarrollo de servicios RESTful es barato y tiene muy pocas "barreras" para su adopción.
¿Cómo funciona un web service?
El servicio a conectar es el que genera el WSDL describiendo el Web Service y registra el WSDL en el directorio UDDI o Service Registry.El servicio a conectar o la aplicación del cliente requiere un Web Service y se pone en contacto con el UDDI para localizar el Web Service.El cliente, basándose en la descripción descrita por el WSDL, envía un request para un servicio particular al Web Service Listener, que se encarga de recibir y enviar los mensajes en formato SOAP.El Web Service analiza el mensaje SOAP del request e invoca una operación particular en la aplicación para procesar el request. El resultado se escribe de nuevo en SOAP en forma de respuesta y se envía al cliente.El cliente analiza el mensaje de respuesta SOAP y lo interpreta o genera un error si ha habido alguno.
Ejemplos de web services:
Página con varios ejemplos: http://www.webservicex.net/new/Home/IndexGlobal Weather: http://www.webservicex.net/globalweather.asmx?wsdlCurrency conversor: http://www.webservicex.com/CurrencyConvertor.asmx?wsdlCatastro español:
- https://ovc.catastro.meh.es/ovcservweb/ovcswlocalizacionrc/ovccallejero.asmx?WSDL
- Documentación: http://www.catastro.meh.es/ws/Webservices_Libres.pdf
- Servicios: http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx
E-Goi (requiere estar dado de alta y disponer de una APIKey)
- WDSL: http://api.e-goi.com/v2/soap_any.php?wsdl
- Documentación API: https://api-docs.e-goi.com/
Herramientas para pruebas de web services
En Velneo, utilizamos la herramienta SoapUI para realizar tests de conexión a los diferentes web services.Disponen de una versión gratuita que podéis descargar aquí.Una vez conseguimos conectar y recibir datos, sabemos que la misma operativa y sintaxis nos funcionará en Velneo.
En el canal de youtube de Velneo tenemos disponible para los betatesters el video del seminario de formación de una hora de duración y que en próximas fechas se liberará para el resto de suscriptores.Aquí os adelantamos un pequeño video que muestra en tiempo de ejecución la conexión de Velneo a los dos ejemplos comentados antes.
Life is soft !