Servicios Web

¿Que es y para que sirve?

Un servicio web (en inglés, web service o web services) es una tecnología que utiliza un conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet. La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la arquitectura y reglamentación de los servicios Web.

Los servicios web son aplicaciones autónomas modulares que se pueden describir, publicar, localizar e invocar a través de una red.

El servidor de aplicaciones da soporte a los servicios web que se desarrollan e implementan de acuerdo con la especificación de servicios web para Java™ EE (Java Platform, Enterprise Edition). El servidor de aplicaciones da soporte a los modelos de programación JAX-WS (Java API for XML Web Services) y JAX-RPC (Java API for XML-based RPC ). JAX-WS es un modelo de programación estratégico que simplifica el desarrollo de aplicaciones mediante el soporte de un modelo basado en anotaciones estándar para desarrollar clientes y aplicaciones de servicios web.

Un escenario típico de servicios web es una aplicación de empresa que solicita un servicio de otra aplicación existente. La solicitud se procesa con una dirección web determinada, utilizando mensajes SOAP a través de un transporte HTTP, JMS (Java Message Service) o se invoca directamente como EJB (Enterprise JavaBeans). El servicio recibe la solicitud, la procesa y devuelve una respuesta. Ejemplos de un servicio web pueden ser los informes meteorológicos o la obtención de información bursátil. La llamada de método es síncrona, esto es, espera a que el resultado esté disponible. Los servicios web de transacciones, que dan soporte a operaciones de cotizaciones, de empresa a empresa (B2B) o de empresa a cliente (B2C), son, por ejemplo, la reserva de vuelos aéreos y los pedidos de compra.



Características

  • Las características principales de los servicios Web, son las siguientes:
  • Utilización de estándares de internet. La única forma para que los servicios Web sean utilizados por la cantidad de sistemas heterogéneos existentes en Internet es el empleo del protocolo de transferencia de datos HTTP utilizado por todos los navegadores Web y XML.
  • Basados en tecnologías de paso de mensajes. La interacción entre el cliente y el proveedor del servicio es empaquetada en unidades autodesciptivas denominadas mensajes. Dicha interacción se describe en función de los mensajes intercambiados.
  • Combinan lo mejor de la tecnología de componentes y de la tecnología Web. Los servicios Web presentan una funcionalidad de caja negra que puede ser reutilizada sin preocuparse de cómo es implementada y ello proporciona interfaces bien definidas.

Ventajas e inconvenientes de los servicios Web

Quizás cueste entender las ventajas de usar Servicios Web frente a rutinas de librerías de programación. Un programador de PERL (Practical Extraction and Reporting Language) que quiera incorporar ciertos algoritmos sofisticados en su aplicación, sabe que debe recurrir al CPAN (Comprehensive Perl Archive ) para trabajar con alguna librería y sus correspondientes rutinas y objetos. Con lo bien que funciona el CPAN en Perl o el Pear (PHP Extension and Aplication Respository) en PHP. ¿Para qué se desea trabajar con Servicios Web? No sólo eso cabe preguntarse. Además, un programa que utilice Servicios Web no puede funcionar si no dispone de acceso a Internet en la computadora donde se ejecuta.
La explicación que da sentido a los Servicios Web es sencilla. Las rutinas de los Servicios Web se actualizan de forma transparente para el programador y para el encargado de mantenimiento de la aplicación. Además, mediante un Servicio Web se puede implementar un programa que tenga funciones imposibles de contemplar bajo el uso de rutinas de librerías, como por ejemplo, incorporar un buscador de páginas Web. Por otro lado, la carga de CPU que supone la ejecución de una rutina desaparece al usar Servicios Web y se reparte por Internet sobre el servicio del Servicio Web. Esto es un comienzo de "Computación Distribuida".
Los Servicios Web no pretender eliminar del mapa a las librerías o módulos de programación. No pueden hacerlo, ya que no son una versión mejorada de éstas, sino una herramienta con distintas aplicaciones en determinados casos. Así, por ejemplo, si necesitamos una rutina que descodifique un fichero de vídeo no es aconsejable utilizar un Servicio Web. ¿Por qué? Porque ello supondría enviar el fichero de vídeo al servidor del Servicio Web, éste lo descodifica y nos envía el vídeo en formato plano, sin compresión de ningún tipo y supondría un consumo de ancho de banda. Por supuesto, el procesamiento en local del codec de vídeo es mucho más eficiente que el procesamiento remoto.
Sin embargo, en otras ocasiones, sí interesa utilizar un Servicio Web, en lugar de la rutina de una librería. Por ejemplo, si se desea que una aplicación, como por asrte de magia, sepa el precio de un determinado libro dado su ISBN (es un Servicio Web que ofrece Barnes and Noble) o si se desea que un programa sepa a quién pertenece un determinado dominio de internet (es un Servicio Web prestado por NetworkSolutions), o si un sistema de gestión de empresa requiere en todo momento disponer de una cotización en un tiempo real de divisas, o si queremos que una aplicación sea multiidioma sin necesidad de incorporar cada mensaje traducido en varios idiomas, sino mediante una traducción automática. En la actualidad, existen muchos Servicios web interesantes, algunos de ellos están bien ordenados y explicados (en Inglés) en 
Hay que reconocer que los Servicios Web van a ser utilizados principalmente por programadores Web (PHP, Perl, ASP, JSP, etc.) ya que su máxima funcionalidad se da casi siempre ligada a internet. Así por ejemplo, un programador Web puede incorporar a su aplicación una búsqueda de documentos utilizando el servicio denominado "Google Web API" (www.google.com/apis/) que permite a los desarrolladores poder interrogar y tomar información de casi tres mil millones de documentos Web directamente desde Google. Para lograrlo, Google usa SOAP (Simple Object Access Protocol) y WSDL (Web Services Definition Language) de forma que los desarrolladores puedan programar en diferentes entornos.
Las principales compañías del mundo han empezado a desarrollar soluciones mediante la tecnología de los Servicios Web. Ahora se relacionan algunos ejemplos:
  • Microsoft: uno de lso servicios que brinda es el MapPoint.Net. Mediante este servicio, el usuario podrá conocer su localización geográfica exacta y otros datos adicoonales relacionados con su posición actual, como información de tráfico, rutas y posibles o puntos comerciales cercanos.
  • IBM: ha implementado una solución basada en los Servicios Web llamada e-Business on Demand. Esta solución permite la construcción de Extranets que ayude a las empresas a ver catálogos de productos , realizar y localizar pedidos o chequear el estado de su inventario en tiempo real.

Estandares

XML: eXtensible Markup Language
La definición dada por el World Wide Web Consortium (los responsables de XML) es:«XML describe una clase de objetos de datos llamados documentos XML, y describe parcialmente el comportamiento de los programas que los procesan. Los documentos XML están formados por unidades de almacenamiento llamadas entidades, las cuales contienen datos analizados (parsed) o sin analizar (unparsed). Los datos analizados están formados por caracteres, algunos de los cuales conforman datos y otros etiquetas.»
Aunque esta definición es un poco compleja por la cantidad de elementos involucrados, es importante resaltar que XML permite representar documentos («documento» se refiere no sólo a textos, sino también gráficos, correos electrónicos, transacciones de comercio electrónico, etc.) y que todo documento XML posee una estructura lógica y una física. Físicamente, el documento está compuesto de unidades llamadas entidades. Una entidad, en términos más simples, puede verse como un «trozo de documento», es decir, puede ser un simple carácter o todo el capítulo de un libro. Todo documento tiene una entidad raíz.
En un documento XML es posible hacer referencia a entidades internas o externas, indicando que están definidas en el mismo documento o en otros documentos (que pueden estar en otros archivos del disco duro, en una base de datos, en Internet, etc.), lo que hace muy flexible la construcción de documentos XML.
Lógicamente el documento XML está formado por elementos, que representan la estructura de la información que se está manejando, por ejemplo, si se fuera a representar un libro puede definirse que está formado por los siguientes elementos.
Cada elemento puede constar de otros elementos, así como de frases y palabras (normalmente el contenido del documento). El elemento que contiene a los demás (en el ejemplo, libro), se denomina elemento raíz, indicando que no depende de otros elementos.
Para definir un elemento en XML se tienen etiquetas y contenido, que en XML se denominan datos de tipo carácter.
Las estructuras físicas y lógica de un documento se organizan adecuadamente, para lo cual se han establecido unas normas que definen cuándo un documento XML está bien formado y cuándo es válido, o no.
WSDL: Web Services Definition Language
WSDL es el lenguaje común utilizado para la descripción de los servicios Web. Es un lenguaje basado en XML que describe totalmente la forma en la cual los clientes externos pueden interactuar con los servicios Web existentes en una máquina dada, los métodos que soportan y la sintaxis de los protocolos de comunicación (HTTP, SOAP).
En términos generales, un documento WSDL contiene información acerca de la interfaz, la semántica y los aspectos administrativos involucrados en una solicitud (llamado) a un servicio web.
Según el consorcio W3C (World Wide Web Consortium), encargado de la definición del estándar, WSDL es «un formato XML para la descripción de servicios de red, como un conjunto de puntos finales operando sobre mensajes que contienen información orientada a documentos u orientada a procesos». Las operaciones y mensajes se describen en forma abstracta y luego se asocian a un protocolo de red o a un formato de mensaje específico, para definir un punto final. WSDL se extiende para permitir la descripción de los puntos finales y sus mensajes, sin importar qué formatos de mensaje o protocolos de red se estén utilizando para la comunicación.

SOAP: Simple Object Access Protocol
El protocolo SOAP (Simple Object Access Protocol) utiliza mensajes XML para invocar métodos remotos. Un Servicio Web podría interactuar con servicios remotos a través de los métodos get y post de HTTP, pero SOAP es mucho más robusto y flexible.
SOAP es un protocolo liviano, basado en XML, para el intercambio de información estructurada en un ambiente descentralizado y distribuido. Sin embargo, SOAP no define la aplicación, ni la semántica de implementación. En vez de esto, proporciona un modelo de empaquetamiento modular y los mecanismos para la codificación de los datos dentro de los módulos. Esto permite que el protocolo simple se utilice en una amplia variedad de sistemas modulares y que cumpla su propósito primario de facilitar la interoperabilidad entre componentes de software heterogéneos.
SOAP es una especificación para la invocación de métodos en servidores, servicios, componentes y objetos, y codifica la práctica existente de utilizar XML y HTTP como un mecanismo de invocación de métodos.
Un paquete SOAP contiene información que se puede utilizar para invocar un método. La especificación SOAP no define la forma de llamar al método; tampoco maneja recolección de basura distribuida, ni la seguridad de tipos o HTTP bidireccional.
Lo que SOAP permite es el paso de parámetros y comandos entre clientes y servidores de HTTP, independientemente de las plataformas y aplicaciones existentes en el cliente y en el servidor. Los parámetros y los comandos se codifican utilizando XML.


WSDL

Web Services Description Language (WSDL) es un lenguaje descriptivo basado en XML (Extensible Markup Language). Este lenguaje se remitió a W3C (World Wide Web Consortium) como el estándar del sector para describir servicios web. La potencia de WSDL se deriva de dos principios básicos de arquitectura: la posibilidad de describir un conjunto de operaciones empresariales y la posibilidad de separar la descripción en dos unidades básicas. Estas unidades son una descripción de las operaciones y los detalles de cómo se empaquetan la operación y la información asociada.
Un documento WSDL define los servicios como colecciones de puntos finales de red o puertos. En WSDL, las definiciones abstractas de los puntos finales y los mensajes están separadas de los enlaces de formato de datos o el despliegue de red concreto. Esta separación permite reutilizar las definiciones abstractas: los mensajes, que son descripciones abstractas de los datos intercambiados, y los tipos de puerto, que son las colecciones abstractas de las operaciones. El protocolo específico y las especificaciones de formato de datos de un tipo de puerto en concreto constituyen un enlace reutilizable. El puerto se define asociando una dirección de red con un enlace reutilizable, y una colección de puertos define un servicio. Por lo tanto, un documento WSDL está formado por varios elementos.
A continuación se muestra la estructura de la información de un archivo WSDL:
Anatomía de archivo WSDL

Un archivo WSDL contiene las partes siguientes:
  • Definición de interfaz de servicio Web
    Esta parte contiene los elementos y los espacios de nombres.
  • Implementación de servicio Web
    Esta parte contiene la definición del servicio y los puertos.
  • UDDI: Universal Discovery, Description and Integration
    Para los servicios Web, XML es el mecanismo por medio del cual los objetos de negocio acuerdan lo que van a hablar unos a otros, SOAP indica cómo van a efectuar la comunicación y UDDI les permite conocer con quién se van a comunicar y dónde encontrar otros objetos de negocio.
    En pocas palabras, UDDI es una especificación para un registro distribuido de información acerca de los servicios Web. Define la forma en la cual se publica y descubre información acerca de éstos.
    Un registro basado en UDDI es donde se pueden descubrir los servicios Web. El método utilizado por UDDI para el descubrimiento de servicios es tener un registro de aquellos servicios que se encuentran distribuidos a través del Web. En el registro distribuido, los negocios y los servicios se describen utilizando un formato XML común. Los datos estructurados en esos documentos XML son de fácil búsqueda, análisis y manipulación.
    Debe anotarse que UDDI/SOAP no son los únicos modelos para el descubrimiento y manejo de mensajes en los servicios Web. EbXML ha sido desarrollado para un fin similar, así como para proporcionar una interfaz de negocio, seguridad robusta y otras funciones que permiten el manejo de transacciones reales de e-business. ebXML y UDDI/SOAP son tecnologías complementarias. Como su nombre lo indica, el estándar de descripción universal, descubrimiento e integración (UDDI), proporciona un mecanismo para que los objetos de negocio se describan a sí mismos y a los tipos de servicios que proporcionan, para luego registrarse y publicarse en un registro UDDI. Tales negocios “públicos” pueden ser buscados, consultados o descubiertos por otros objetos de negocio, utilizando mensajes SOAP. Después de descubrir otros negocios similares con los cuales pueden asociarse, los objetos de negocio pueden utilizar este mecanismo para “integrar” sus servicios con sus “socios” y proporcionar servicios a sus clientes.
WS-Security (Seguridad en Servicios Web) es un protocolo de comunicaciones que suministra un medio para aplicar seguridad a los Servicios Web. En abril de 2004 el estándar WS-Security 1.0 fue publicado por Oasis-Open. En 2006 fue publicada la versión 1.1.
Originalmente desarrollado por IBMMicrosoft, y VeriSign, el protocolo es ahora llamado oficialmente WSS y está desarrollado por un comité en Oasis-Open.
El protocolo contiene especificaciones sobre cómo debe garantizarse la integridad y seguridad en mensajería de Servicios Web. El protocolo WSS incluye detalles en el uso de SAML y Kerberos, y formatos de certificado tales como X.509.
La Integridad de datos y confidencialidad podrían también garantizarse sobre Servicios Web a través del uso de la Transport Layer Security (TLS), por ejemplo enviando mensajes sobre HTTPS. Esto puede reducir significativamente la sobrecarga, por ejemplo eliminando la necesidad de codificar claves y firmas de mensaje en ASCII antes de enviar. La parte negativa de usar TLS sería si los mensajes necesitaran pasar a través de un servidor proxy, como si fuera necesario ver la petición para enrutado. En tal caso, el servidor vería la petición que llega del proxy, no del cliente; esto podría ser solventado si el proxy tiene una copia de la clave y certificado del cliente, o teniendo un certificado de firmado de confianza para el servidor, con el cual podría generar un par clave/certificado que coincida con aquellos del cliente. Sin embargo, el hecho de que el proxy está operando el mensaje significa que no asegura la seguridad extremo a extremo, sino que solo asegura la seguridad punto a punto.
WS-Security incorpora características de seguridad en el encabezado de un mensaje SOAP, trabajando en la capa aplicación. Así asegura seguridad extremo a extremo.

REST

REST usa el propio protocolo HTTP para la comunicación entre máquinas. HTTP es ampliamente soportado por todos los sistemas y de hecho para la transferencia de datos en la web se usa HTTP.
REST se caracteriza por no tener estado. Es decir, el servidor no es capaz de recordar el estado de la anterior solicitud REST que pudo, o no, hacer un cliente. Por ello, el cliente tiene que enviar en cada solicitud todo el estado de su sesión, lo que se suele hacer mediante un token que le «ayude a recordar» al servidor.
Mencionamos esas dos características porque es justamente lo permite que la implementación de REST sea realmente fácil y se haya popularizado tanto el tipo de servicio web que se conoce como el nombre de API REST.
REST tiene a simplificar las cosas y en esa misma línea se suele usar un lenguaje diferente para representación de los datos, el lenguaje JSON. Hoy REST y JSON se han convertido en la opción más sencilla y por tanto más recomendable para implementar un servicio web.

JSON

Para los sistemas de comunicación entre máquinas se requiere una serie de características, básicamente marcadas porque las máquinas implicadas en la comunicación pueden tener sistemas muy diferentes. Pueden usar lenguajes de programación o bases de datos diferentes y hasta los sistemas operativos suelen ser distintos entre clientes y servidores. Por ello, para la comunicación de los datos se usa básicamente lenguajes escritos en archivos de texto plano.
Entre los lenguajes más usados para la comunicación de los datos en los servicios web, encontramos XML y JSON.
  • XML está basado en etiquetas, como HTML. Es más tradicional pero también es un lenguaje más avanzado, que presenta diversas utilidades para su extensión, validación de la información y sintaxis de los datos, etc.
  • JSON es un lenguaje más nuevo, basado en sintaxis Javascript. Generalmente, es más ligero y requiere mucho mejor carga del servidor para su procesamiento.

No hay comentarios.:

Publicar un comentario

JavaScript

JavaScript