2. 1)¿Qué son los servicios web?
2) ¿Entendemos para qué sirven?
3) ¿Quién los usa?
4) Estándares y protocolos
3. 1) ¿Qué son los Servicios Web?
• Según el W3C la definición es
"A Web service is a software system designed to support
interoperable machine-to-machine interaction over a network. It has
an interface described in a machine-processable format (specifically
WSDL). Other systems interact with the Web service in a manner
prescribed by its description using SOAP-messages, typically conveyed
using HTTP with an XML serialization in conjunction with other Web-
related standards." http://www.w3.org/TR/2004/NOTE-ws-gloss-
20040211/
• Que significa………
Un servicio Web es un sistema de software diseñado para soportar la interacción
interoperable de máquina a máquina a través de una red. Cuenta con una
interfaz descrita en un formato procesable por máquina (específicamente WSDL).
Otros sistemas interactúan con el servicio Web de una manera prescrita por su
descripción usando mensajes, por lo general transmiten por medio de HTTP con
una serializarían XML en conjunción con otros estándares relacionados con la
Web
4. ¿Qué son los servicios web?
• Un servicio web consiste en una función disponible
en un servidor conectado al web. Esta función puede
consistir en cualquier cosa:
– Realizar un simple cálculo con unos datos que se le envían
como parámetro,
– Acceder a una base de datos para recuperar un conjunto de
registros.
– Validar la corrección de una información o contrastarla
frente a otros datos, etc.
• El servicio web podrá ser solicitado desde otro programa
informático que se ejecute en un ordenador conectado al web.
Junto a la solicitud de la ejecución, se pueden enviar al
ordenador que ofrece el servicio unos parámetros que el
servicio web remoto tomará como base para el cálculo o la
función.
5. ¿Qué son los servicios web?
• La aplicación que actúa como cliente debe conocer:
– La URL del servidor remoto que ofrece el servicio,
– El nombre del servicio que se solicita, y
– Los parámetros que se deben enviar junto con la llamada al
servicio.
• Estos datos se enviarán mediante HTTP
• El servidor que ofrece el servicio web leerá los
parámetros que se le han enviado, llamará a un
componente o programa encargado de implementar
el servicio, y los resultados que se obtengan de su
ejecución serán devueltos al servidor que solicitó la
ejecución del servicio.
6. 2) ¿Entendemos para qué sirven?
• En teoría, los Servicios Web proporcionan una
tecnología para “soportar las interacciones entre
máquinas en una red” (definición de W3C)
• Otros opinan que sirven fundamentalmente para
implementar SOAP
• Otros opinan que sirven para desarrollar
aplicaciones distribuidas en general, mejorando y
reemplazando a las tecnologías anteriores.
7. 3) ¿Quién los usa?
• Las compañias de desarrollo software
– IBM, Sun, Microsoft, Oracle, ...todas hacen ahora Servicios Web
– Es muy curioso ver ahora sus paginas web sobre estos temas
• Las organizaciones de estandarización (W3C,...)
• Los grupos de investigación
– Revistas especializadas, Listas de Distribución, Charlas,
Congresos ;-), …
• Las compañías de negocio
– Financial (VISA, AMEX),
– Travel agencies (TerminalA),
– E-shops (Amazon),
– Document handling (Adobe)
8. Integración de Servicios Web
HTTP/HTML
HTTP/SOAP/XML
Servicio Web
de Viajes Servicio Web de
Alquiler de Coches
GUI de la Compañía
de Viajes
Servicio Web de
Reserva de Hotel
Servicio Web de
Reserva de Vuelos
9. 4) Estándares y protocolos
• Protocolo de transporte: HTTP (hypertext transfer
protocol)
• Formato de representación: XML
• Protocolo de comunicación: SOAP
– Simple Object Access Protocol
• Especifica cómo mandar mensajes XML sobre HTTP
• Define el contenedor del mensaje
• Definición del interface de servicio: WSDL
– Web Service Description Language
• IDL (Interface Definition Language) para servicios Web basado en XML
• Describe el tipo de datos (Esquema XML), funciones exportadas y sus
mensajes de petición y respuesta
• Localización del servicio: UDDI
– Universal Descrption, Discovery and Integration
10. HTTP (HyperText Transfer Protocol)
Hypertext Transfer Protocol o HTTP (en español protocolo de
transferencia de hipertexto) es el protocolo usado en cada transacción
de la World Wide Web. HTTP fue desarrollado por el World Wide
Web Consortion que el 1999 publicó la RFC 2616 que especifica la
versión 1.1. HTTP define la sintaxis y la semántica que utilizan los
elementos de software de la arquitectura web (clientes, servidores,
proxies) para comunicarse. Es un protocolo orientado a
transacciones y sigue el esquema petición-respuesta entre un
cliente y un servidor. Al cliente que efectúa la petición
(un navegador web o un spider) se lo conoce como "user agent"
(agente del usuario). A la información transmitida se la llama
recurso y se la identifica mediante un localizador uniforme de
recursos (URL). El resultado de la ejecución de un programa, una
consulta a una base de datos, la traducción automática de un
documento, etc.
11. XML (eXtensible Markup Language)
XML, siglas en inglés de eXtensible Markup Language ('lenguaje
de marcas extensible'), es un lenguaje de marcas desarrollado por
el World Wide Web Consortium (W3C) utilizado para almacenar
datos en forma legible. Permite definir la gramática de lenguajes
específicos para estructurar documentos grandes. A diferencia de
otros lenguajes, XML da soporte a bases de datos, siendo útil
cuando varias aplicaciones deben comunicarse entre sí o integrar
información.
XML no ha nacido sólo para su aplicación para Internet, sino que
se propone como un estándar para el intercambio de información
estructurada entre diferentes plataformas. Se puede usar en bases
de datos, editores de texto, hojas de cálculo, etc.
12. SOAP (Simple Object Access Protocol)
• La especificación SOAP indica cómo se deben
codificar los mensajes que circularán entre las dos
aplicaciones.
• Fue definido inicialmente por Microsoft, Userland
Software y DevelopMentor, a día de hoy se trata de una
especificación mantenida por el W3C que cuenta con
el apoyo de otros fabricantes como IBM, HP, Oracle,
etc.
• La especificación SOAP define dos modelos de
mensajes:
– Un mensaje que se enviará desde la aplicación cliente a la
aplicación servidor, solicitando la ejecución de un método al
que se pasan una serie de parámetros.
– Un mensaje que se enviará desde la aplicación servidor a la
cliente, y que contendrá datos XML con los resultados de la
ejecución del método solicitado.
13. WSDL (Web Services Description Language)
• Permite describir los distintos métodos o funciones
que están disponibles en un servicio web, así como su
signatura, es decir, el número de argumentos o
parámetros que se les debe pasar, y el tipo de dato
que devolverá la función como resultado.
• Se establece una equivalencia entre el documento
WSDL y un “contrato” que especifica los servicios
que el servidor se compromete a ofrecer al cliente,
siempre que éste los solicite de la forma adecuada
14. WSDL (Web Services Description Language)
• Los documentos WSDL deben estar disponibles en el
servidor web que ofrece los servicios.
• Como su creación resulta compleja, las distintas
implementaciones de SOAP permiten generar estos
archivos de forma sencilla, sin necesidad de conocer
los elementos y la estructura del esquema XML en el
que se basan.
15. Algunos “inconvenientes” de servicios web
• Mensajería fiable
• Seguridad
• Acuerdos en cuanto a estándares para transacciones y coreografía
• A sincronía, latencia, fragmentación, transparencia frente a fallos
en nodos y comunicaciones, degradación de prestaciones, poca
escalabilidad (cuellos de botella)... Vamos, los problemas propios
de los sistemas distribuidos
• ¿Interoperabilidad?
• ¿Contratos?
• ¿Calidad de servicio? (definición, monitorización,...)
• ¿Métricas de calidad ?
• ¿Negociación automática?
• ¿Tarificación? (licencias, acuerdos de uso, re-venta, etc.)
• ¿Legislación?
• Marketing: ¿Es el software un producto, o un servicio?
16. Cifras uso de Internet (Agosto 2014)
% Empresas...
Latino
nameri
ca
Europ
a
...que compran a través de
Internet
19% 32%
...que venden a través de Internet 28% 57%
Notas del editor
Decir que esto se basa en las pags web de los mayores “jugadores” de los servicios web (IBM, Sun, MS, ...), las revistas especializadas sobre estos temas, y las listas de distribución
Decir que esto se basa en las pags web de los mayores “jugadores” de los servicios web (IBM, Sun, MS, ...), las revistas especializadas sobre estos temas, y las listas de distribución
En el 2002, la W3C dijo que un Servicio Web era:“A software application identified by an URI, whose interfaces and binding are capable of being identified, described and discovered by XML artifacts and supports direct interactions with other software applications using XML based messages via Internet-based protocols” Eso dejaba la puerta abierta a un monton de posibilidades, pues lo unico que fijaba era que de deberia usar XML como lenguaje para describir cosas, y que cualquier protocolo para Interner valía. Fantastico! Yo me alegre mucho, porque permitia un monton de combinaciones (independientemente de que al final todo el mundo usara WSDL para describir servicios, SOAP sobre http para invocarlos, etc.) Pero por ejemplo, permitia definir en un momento bridges entre Web services con CORBA/IOOP, etc.Haciendo uso de su costumbre de desdecirse y cambiar sus estandares el primer miercoles de cada mes, el WS Architecture group cambio hace poco la definicion, y ahora un servicio Web es:"A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards." http://www.w3.org/TR/2004/NOTE-ws-gloss-20040211/La W3C tambien ha definido lo que es un "servicio":A service is an abstract resource that represents a capability of performing tasks that represents a coherent functionality from the point of view of provider entities and requester entities. To be used, a service must be realized by a concrete provider agent. Con esto, hasta la siguiente version de la definicion (el proximo primer miercoles de mes :-), hace falta describir los WS con WDSL, e interactuar con ellos usando SOAP. El uso de HTTP y serializacion de XML no es (todavia) imprescindible.De todas formas, mi experiencia con W3C es que cambian con demasiada frecuencia sus bases y conceptos fundamentales, dependiendo de las tendencias del mercado, o del exito de sus estandares (por ejemplo, WSCI duro menos que el programa del Gran Wyoming en la 1 -- siento que el chiste no sea comprensible para los que no ven la tele en España).Lo que si es cierto es que hay una gran actividad, especialmente en la OMG para definir bridges de interoperabilidad entre sus estandares y los de W3C. Por ejemplo, estan ya definidos los siguientes documentos en la OMG:formal/05-02-01: CORBA to WSDL/SOAPformal/03-11-02: CORBA to WSDL/SOAP Interworking Specification How RSS/Atom Is Replacing Web Services