New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. ·...
Transcript of New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. ·...
![Page 1: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/1.jpg)
Tema 8Servicios web
F. García-Carballeira, Mª. Soledad Escolar,
Luis Miguel Sánchez, Fco. Javier García
Sistemas Distribuidos
Grado en Ingeniería Informática
Universidad Carlos III de Madrid
![Page 2: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/2.jpg)
Contenido
� Protocolo HTTP
� Clientes y servidores web
� Tipos de páginas web
� Servicios web
� Principios básicos de diseño
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Principios básicos de diseño
� SOAP
� Entornos de desarrollo
� gSOAP
2
![Page 3: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/3.jpg)
� Elementos que conforman la WorldWideWeb (WWW):� Documentos hipertexto
� Protocolo HTTP
� Lenguaje HTML
Introducción
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Servidor Web
� Navegadores
3
![Page 4: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/4.jpg)
Protocolo HTTP
� HyperText Transfer Protocol se usa en WWW para transferir hipertexto (páginas HTML con hiperenlaces)
� Usa el puerto TCP 80 para aceptar conexiones entrantes
� Se basa en el paradigma cliente-servidor
Servidor web Cliente web
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
solicitud
respuesta
Elementos solicitud:- <mandato> <dirección documento> <versión HTTP >- cabecera opcional- datos opcionales
Elementos respuesta:- línea de estado con formato <protocolo><códigos estado><descripción>- información de cabecera- documento.
4
![Page 5: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/5.jpg)
Protocolo HTTP: petición� Se establece una conexión al host al puerto 80
� Línea de petición:
<Método><espacio><URI solicitado><espacio><protocol o>\r\n
� Donde método:
� GET: solicita una páginaWEB� HEAD: solicita la cabecera de una páginaWeb
POST: envía datos a una aplicaciónWeb
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
HEAD: solicita la cabecera de una páginaWeb� POST: envía datos a una aplicaciónWeb� PUT: solicita almacenar una página web
� dode URI (Uniform Resource Identifier)� URL Uniform Resource Locator� URN Uniform Resource Name
� donde protocolo� HTTP/0.9� HTTP/1.0� HTTP/1.1� HTTP/1.2
5
![Page 6: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/6.jpg)
Protocolo HTTP: respuesta
� Contenido de la respuesta:
<protocolo> <código>
<cabeceras>
<recurso>
donde protocolo es aquel que entiede el servidorHTTP/0.9
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
donde protocolo es aquel que entiede el servidor� HTTP/0.9� HTTP/1.0� HTTP/1.1� HTTP/1.2
donde código es un código de error:� 200 � OK� 400 � Error en el cliente� 500 � Error en el servidor
…..
6
![Page 7: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/7.jpg)
Ejemplo
Servidor web Cliente web
solicitud
GET /index.html HTTP/1.1 Host: www.example.com
User-Agent: nombre-cliente
[Línea en blanco]
HTTP/1.1 200 OK Date: Fri, 31 Dec 2003 23:59:59 GMT
Content-Type: text/html
Content-Length: 1221
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
respuesta
Content-Length: 1221
<html>
<body>
<h1>Página principal de tuHost
</h1> (Contenido) . . .
</body>
</html>
7
![Page 8: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/8.jpg)
Protocolo HTTP: servidor
� Contenido de la respuesta:
HTTP/1.1 200 OK
Date: Sat, 15 Sep 2001 06:55:30 GMTServer: Apache/1.3.9 (Unix) ApacheJServ/1.0Last-Modified: Mon, 30 Apr 2001 23:02:36 GMTETag: "5b381-ec-3aedef0c"Accept-Ranges: bytesContent - Length: 236
� Línea
� Cabeceras
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Content - Length: 236Connection: closeContent-Type: text/html
<html><head><title>My web page </title></head><body>Hello world!</BODY></HTML>
8
� Recurso
![Page 9: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/9.jpg)
� Fuente: netcraft.com
Servidores HTTP
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
9
![Page 10: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/10.jpg)
� Fuente: en.wikipedia.org/wiki/Usage_share_of_web_browsers
Navegadores web (clientes)
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
10
![Page 11: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/11.jpg)
Tipos de páginas WEB
� Páginas web estáticas
� Páginas web dinámicas
� Ejecutadas en el cliente
� JavaScript
� Applet
� Ejecutadas en el servidor
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Ejecutadas en el servidor
� CGI (Common Gateway Interface)
� PHP
� ASP
� Servlet
11
![Page 12: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/12.jpg)
CGI (Common Gateway Interface)� Programa CGI puede escribirse en:
� Lenguajes de programación: C, Ada, C++, Fortran.
� Lenguaje de script: Perl, Tkl, Python.Máquina Servidor
Máquina ClienteServidor HTTPScript CGICliente WEB
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Solicitud de hello.html
Contenidos de hello.html
Solicitud de hello.cgi
Datos del cliente
Respuesta del servidor (con contenidos dinánimos)
12
![Page 13: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/13.jpg)
Evolución de la Web
HTML HTML
HTML, XML
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Generation 1Static HTML
Generation 2Web Applications
HTML, XML
Generation 3Web Services
13
![Page 14: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/14.jpg)
Problemas de los tradicionales
desarrollos basados en Web� Diversas tecnologías:
� Applets, CGI, Lenguajes de Scripts, etc.
� Desarrollos muy centrados en la interacción con la persona
Acceso Web Aplicaciones
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Acceso Web Aplicaciones
Datos Aplicaciones
ClientesEmpleados
Otras aplicaciones
?
14
![Page 15: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/15.jpg)
Servicios Web
� Idea: Adaptar el modelo de programación web (débilmente acoplado) para su uso en aplicaciones no basadas en navegador
� El objetivo es ofrecer una plataforma para construir aplicaciones distribuidas utilizando un software que enmascare la heterogenidad
� Un servicio web es una colección de protocolos y estándares abiertos que sirven para intercambiar datos entre aplicaciones:
� Escritas en distintos lenguajes de programación
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Escritas en distintos lenguajes de programación
� Ejecutan en distintos sistemas operativos y arquitecturas
� Desarrolladas de manera independiente
� Los servicios web son independientes de la aplicación que los usa
� Estandarización controlada por un grupo del W3C:� http://www.w3.org/2002/ws/
15
![Page 16: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/16.jpg)
Otras definiciones
� The W3C defines a web service as a software system designed to support interoperable Machine to Machine interaction over the network
� Web services are frequently just Web APIs that can be accessed over a network, such as the Internet, and
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
accessed over a network, such as the Internet, and executed on a remote system hosting the requested services
16
![Page 17: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/17.jpg)
Ventajas e inconvenientes
� Interoperabilidad entre aplicaciones de SW que pueden ejecutar sobre distintas plataformas
� Al ejecutar HTTP, pueden atravesar firewalls sin necesidad de cambiar las reglas de filtrado
� Independencia entre el servicio web y la aplicación que lo usa
� Fomentan el uso de estándares abiertos
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Fomentan el uso de estándares abiertos
� Bajo rendimiento comparado con otros modelos de computación distribuida: RMI, Corba o DCOM.
� Pueden esquivar firewalls
17
![Page 18: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/18.jpg)
Interfaz y operaciones
� Una interfaz de servicio web consta de un conjunto de operaciones que pueden ser accedidas por un cliente en Internet
� Los servicios web no son específicos de HTTP
� El conjunto de operaciones en un servicio web pueden ser
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� El conjunto de operaciones en un servicio web pueden ser ofrecidas por programas, objetos, bases de datos, etc.
� Un servicio web puede ser manejado por:
� Un servidor web tradicional
� Un servidor independiente (stand-alone)
18
![Page 19: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/19.jpg)
Principios básicos de diseño
� Interoperabilidad en entornos heterogéneos
� Patrones de comunicación
� Independencia del modelo de programación
� Representación de los mensajes
� Combinación de servicios Web
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Combinación de servicios Web
� Referencias de servicios
� Activación de servicios
� Transparencia
19
![Page 20: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/20.jpg)
Interoperabilidad en entornos heterogéneos
� Servicios basados en protocolos abiertos y estándar
� Protocolo del nivel de aplicación para la transferencia de mensajes (ej. HTTP)
� SOAP: empaqueta la información y la transmite entre el cliente y el proveedor del servicio
� XML: describe la información, los mensajes
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� XML: describe la información, los mensajes
� UDDI: lista de servicios disponibles
� WSDL: descripción del servicio (lenguaje de interfaz)
� Ventajas:
� Paso de cortafuegos
� Difícil en otros entornos como Java RMI o CORBA
20
![Page 21: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/21.jpg)
Estándares empleados
WSDL
Aplicaciones
Servicios de directorio Seguridad
Web Services
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
WSDLWeb Services
XML
SOAP
URIs HTTP, SMTP u otros
21
![Page 22: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/22.jpg)
Diferentes patrones de comunicación
� Patrón petición-respuesta síncrono
� Modelos basados en RPC
� Mensajes asíncronos
� Mensajería
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
22
![Page 23: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/23.jpg)
Independencia del modelo de programación
� Servicios Web ofrecen un modelo de computación en Internet
� Independencia del lenguaje de programación
� Independencia del modelo de programación
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
23
![Page 24: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/24.jpg)
Representación de mensajes
� Mensajes SOAP y datos representados en XML
XML
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Aplicación 2Aplicación 1
24
![Page 25: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/25.jpg)
XML
� eXtensible Markup Language (XML)� Definido por W3C (www.w3c.org)
� XML es extensible, permite a los usuarios definir sus propias etiquetas (diferente a HTML)
� Componentes:
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Elementos y atributos� <tag attr=valor/>
� <tag>valor</tag>
� Ejemplo: http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL
� Espacios de nombres � xmlns="http://www.w3.org/1999/xhtml”
� Esquemas
� Elementos y atributos que pueden aparecer en un documento
25
![Page 26: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/26.jpg)
SOAP
� Simple Object Access Protocol (SOAP) es un protocolo estandarizado por W3C para el intercambio de mensajes basados en XML sobre redes de ordenadores
� Usa un protocolo de la capa de aplicación como protocolo de transporte
� Típicamente el protocolo HTTP pero no el único
� El protocolo SOAP soporta distintos patrones de mensajes:
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� El protocolo SOAP soporta distintos patrones de mensajes:
� El más usado es el basado en RPC
� Además usa WSDL (Web Service Description Language) para describir web services:
� Se usa en combinación con XML para proporcionar servicios web sobre Internet
26
![Page 27: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/27.jpg)
SOAP
� SOAP especifica:
� Cómo representar los mensajes de texto en XML
� Cómo combinar mensajes SOAP para un modelo petición-respuesta
� Cómo procesar los elementos de los mensajes
� Cómo utilizar el protocolo de aplicación (HTTP, SMTP,
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Cómo utilizar el protocolo de aplicación (HTTP, SMTP, …) para enviar mensajes SOAP
27
![Page 28: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/28.jpg)
Nodo SOAP
� Nodo que transmite, recibe, procesa y responde un mensaje SOAP
� Emisor SOAP
� Receptor SOAP
� Intermediario
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
E
I
I
I
R
28
![Page 29: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/29.jpg)
Mensaje SOAP
� Unidad básica de comunicaciónentre dos nodos SOAP
� El mensaje es transportado en un envelope
� Encabezado opcional (header)
� Cuerpo (body)
� Los elementos XML anteriores son
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Los elementos XML anteriores son definidos como un esquema en el espacio de nombres XML
� Esquema definido en www.w3.org
http://es.wikipedia.org/wiki/Simple_Object_Access_Protocol
29
![Page 30: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/30.jpg)
Encabezado (header)
� Elemento opcional
� Incluye información de control
� Identificador de transacción para su uso con un servicio de transacciones
� Un identificador de mensajes para relacionar mensajes entre sí (Los servicios son autónomos e independientes entre sí)
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
(Los servicios son autónomos e independientes entre sí)
� Un nombre de usuario, una clave pública, etc.
30
![Page 31: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/31.jpg)
Cuerpo (Body)
� Elemento obligatorio
� En el elemento body se incluye:
� Mensaje
� Referencia al esquema XML que describe el servicio
� Comunicación cliente-servidor
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Comunicación cliente-servidor
� El elemento body contiene una petición o una respuesta
� Basada en RPC
31
![Page 32: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/32.jpg)
� POST / engelen/calcserver.cgi HTTP/1.1 Host: websrv.cs.fsu.edu User-Agent: gSOAP/2.7 Content-Type: text/xml; charset=utf-8 Content-Length: 464 Connection: close SOAPAction: ""
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
Ejemplo: SOAP requestlínea de peticion
Cab
ecer
a H
TTP
Cabeceras HTTP
SOAP Envelope
Cabeceras SOAP
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:c="urn:calc"> <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<c:add> <a>1</a> <b>2</b>
</c:add> </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
32
Cuer
po H
TTP
Cabeceras SOAP
Cuerpo SOAP
![Page 33: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/33.jpg)
� HTTP/1.1 200 OK Date: Wed, 05 May 2010 16:02:21 GMT Server: Apache/2.0.52 (Scientific Linux) Content-Length: 463 Connection: close Content-Type: text/xml; charset=utf-8
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope
Ejemplo: SOAP responselínea de respuesta
Cab
ecer
a H
TTP
Cabeceras HTTP
SOAP Envelope
Cabeceras SOAP
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="urn:calc"> <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<ns:addResponse> <result>3</result>
</ns:addResponse> </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
33
Cuer
po H
TTP
Cabeceras SOAP
Cuerpo SOAP
![Page 34: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/34.jpg)
Identificación de servicios
� Cada servicio Web contiene una URI (Uniform Resource Identifier) que identifica unívocamente un recurso
� URL (Uniform Resource Locator)
� Especificado en RFC 1630, 1738, 1808
� Incluyen la localización del recurso
� El formato general de una URL es: esquema://máquina[:puerto]/directorio/archivo
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
esquema://máquina[:puerto]/directorio/archivo
� Ejemplo: http://www.arcos.inf.uc3m.es/~infosd
� URN (Uniform Resource Name)
� Especificado en RFC 2141
� Nombres de recursos que no incluyen su localización
� <URN> ::= "urn:" <NID> ":" <NSS>
� Ejemplo: urn:issn:0167-6423
� Los clientes usan la URI para referenciar el servicio
34
![Page 35: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/35.jpg)
Activación de servicios
� Tipos de activación
� El servicio web se activa bajo demanda
� El servicio web ejecuta continuamente
� El servicio web se solicita al computador identificado en la URL
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
la URL
� Ej: http://www.arcos.inf.uc3m.es/~infosd
� El servicio Web puede residir en ese computador o en otro computador
� Combinación de servicios web
� Mejora las prestaciones
35
![Page 36: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/36.jpg)
Combinación de servicios Web
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Fuente: www.w3c.es
36
![Page 37: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/37.jpg)
Empleo de servicios Web
� Uso directo de SOAP y XML tanto en clientes como servidores
� Dificultad de uso
� Uso a través de un API que oculta los detalles del SOAP y del XML
Más sencillo
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Más sencillo
� Formas de invocación:
� Invocación estática mediante un proxy o stub
� Invocación dinámica: operación genérica que convierte la llamada y los argumentos a SOAP y XML dinámicamente
37
![Page 38: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/38.jpg)
WSDL
� Web Services Description Language
� Lenguaje de descripción de interfaz (IDL) para servicios Web en XML
� Describe el protocolo de aplicación
� Intercambio de los mensajes
� Formato de los mensajes
� WSDL es un documento escrito en XML
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� WSDL es un documento escrito en XML
� Se utiliza para:
� Describir servicios Web
� Localizar servicios Web
� WSDL todavía no es un estándar del W3C (draft)
38
![Page 39: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/39.jpg)
Descripción de servicios web
� Describir el servicio Web
� Especificar la localización del servicio
� Especificar las operaciones y métodos del servicio web
� Normalmente, generado automáticamente a partir del
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Normalmente, generado automáticamente a partir del código fuente del servicio
39
![Page 40: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/40.jpg)
� El servicio da lugar a:
string NumberToWords ( unsignedLong ubiNum )
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.dataaccess.com/webservicesserver/" name="Conversions" targetNamespace="http://www.dataaccess.com/webservicesserver/">
<types>
<xs:schema elementFormDefault="qualified" targetNamespace="http://www.dataaccess.com/webservicesserver/">
Ejemplo: generación de código
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
<xs:schema elementFormDefault="qualified" targetNamespace="http://www.dataaccess.com/webservicesserver/">
<xs:element name="NumberToWords">
<xs:complexType>
<xs:sequence>
<xs:element name="ubiNum" type="xs:unsignedLong"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NumberToWordsResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="NumberToWordsResult" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types><message name="NumberToWordsSoapRequest">
<part name="parameters" element="tns:NumberToWords"/></message><message name="NumberToWordsSoapResponse">
<part name="parameters" element="tns:NumberToWordsResponse"/></message><portType name="ConversionsSoapType">
<operation name="NumberToWords"><documentation>Returns the word corresponding to the positive number passed as parameter. Limited to quadrillions.</documentation><input message="tns:NumberToWordsSoapRequest"/><output message="tns:NumberToWordsSoapResponse"/>
</operation></portType><binding name="ConversionsSoapBinding" type="tns:ConversionsSoapType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/><operation name="NumberToWords">
<soap:operation soapAction="" style="document"/><input>
<soap:body use="literal"/></input><output>
<soap:body use="literal"/></output>
</operation></binding><service name="Conversions">
<documentation>The Conversion Visual DataFlex Web Service will provide different conversion functions. The function currently available will help you converting numbers into words.</documentation><port name="ConversionsSoap" binding="tns:ConversionsSoapBinding">
<soap:address location="http://www.dataaccess.com/webservicesserver/conversions.wso"/></port>
</service></definitions>
40
![Page 41: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/41.jpg)
Ejemplo<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.dataaccess.com/webservicesserver/" name="Conversions" targetNamespace="http://www.dataaccess.com/webservicesserver/">
<types>
<xs:schema elementFormDefault="qualified" targetNamespace="http://www.dataaccess.com/webservicesserver/">
<xs:element name="NumberToWords">
<xs:complexType>
<xs:sequence>
<xs:element name="ubiNum" type="xs:unsignedLong"/>
</xs:sequence>
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="NumberToWordsResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="NumberToWordsResult" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
41
![Page 42: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/42.jpg)
<message name="NumberToWordsSoapRequest">
<part name="parameters" element="tns:NumberToWords"/>
</message>
<message name="NumberToWordsSoapResponse">
<part name="parameters" element="tns:NumberToWordsResponse"/>
</message>
<portType name="ConversionsSoapType">
<operation name="NumberToWords">
<documentation>Returns the word corresponding to the positive number passed as parameter. Limited to quadrillions.</documentation>
<input message="tns:NumberToWordsSoapRequest"/>
<output message="tns:NumberToWordsSoapResponse"/>
</operation>
</portType>
<binding name="ConversionsSoapBinding" type="tns:ConversionsSoapType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
Ejemplo
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="NumberToWords">
<soap:operation soapAction="" style="document"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="Conversions">
<documentation>The Conversion Visual DataFlex Web Service will provide different conversion functions. The function currently available will help you converting numbers intowords.</documentation>
<port name="ConversionsSoap" binding="tns:ConversionsSoapBinding">
<soap:address location="http://www.dataaccess.com/webservicesserver/conversions.wso"/>
</port>
</service>
</definitions>
42
![Page 43: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/43.jpg)
<definitions>
<types>
definición de tipos (independientes del lenguajes)
</types>
<message>
definición de mensajes (a intercambiar)
</message>
<portType>
definición de puertos (interfaz de funciones, incluyendo parámetros, etc.)
Estructura de un documento WSDL
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
definición de puertos (interfaz de funciones, incluyendo parámetros, etc.)
</portType>
<binding>
definición de enlaces (formato de los mensajes y datos a usar)
</binding>
<services>
definición de servicios (nombre de servicio y 1 ó más puertos donde se da)
</services>
</definitions>
43
![Page 44: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/44.jpg)
Elementos
� Types: tipos independientes del lenguaje
� Messages: tipos de mensajes a intercambiar
� PortTypes (interfaz): define la interfaz de funciones (nombre de la operación, parámetros de entrada, parámetros de salida)
� Bindings: especifica el formato de los mensajes y de los datos a ser utilizados.
Services: especifica el nombre del servicio y uno o más sitios (puertos)
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Services: especifica el nombre del servicio y uno o más sitios (puertos) donde encontrar el servicio..
44
![Page 45: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/45.jpg)
� Objetivo: evitar conflictos
� Dos servicios web distintos A y B que tienen un elemento común f
� Cada instancia de f se puede referir como A:f o B:f
� http://www.w3.org/2001/XMLSchema.
Espacios de nombres (namespaces)
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� http://www.w3.org/2001/XMLSchema.
45
![Page 46: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/46.jpg)
UDDI
� Universal Description, Discovery, and Integration� No estándar: Propuesta inicial de Microsoft, IBM y Ariba
� Catálogo de negocios de Internet� Registro distribuido de servicios web ofrecidos por empresas
� Información clasificada en 3 categorías (guías):� Páginas blancas: Datos de la empresa
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Páginas blancas: Datos de la empresa
� Páginas amarillas: Clasificación por tipo de actividades
� Páginas verdes: Descripción de servicios web (WSDL)
� Se accede a su vez como un servicio web
� Puede consultarse en tiempo de desarrollo o incluso dinámicamente en tiempo de ejecución
� Permite búsquedas por distintos criterios� Tipo de actividad, tipo de servicio, localización geográfica, etc.
46
![Page 47: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/47.jpg)
Escenario de uso
Búsqueda de servicio
Escribir la
Repositorio deServicios web
(UDDI)
RegistrarWSDL
http get
Fichero WSDL 1
2
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Escribir la Aplicación
cliente
cliente
Proveedor de servicio
Publicarservicio
WSDL
Petición SOAP
Respuesta SOAP
47
3
4
![Page 48: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/48.jpg)
Ejemplo: Serialización de Mensajes
float precio;
precio=
<ObtenerPrecio>
<item>mesa</item>
</ObtenerPrecio>
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
precio=
ObtenerPrecio(mesa)
<ObtenerPrecioResponse>
<precio>134.5</precio>
</ObtenerPrecioResponse>
48
![Page 49: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/49.jpg)
Ejemplo: mensajes XML
� Ej: float ObtenerPrecio(string item);
Petición:
<ObtenerPrecio>
<item>mesa</item>
Esquema:
<element name=“ObtenerPrecio">
<complexType><all>
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
<item>mesa</item>
</ObtenerPrecio>
Respuesta:
<ObtenerPrecioResponse>
<Precio>134.5</Precio>
</ObtenerPrecioResponse>
<complexType><all>
<element name=“item" type="string"/>
</all></complexType>
</element>
<element name=“ObtenerPrecioResponse">
<complexType><all>
<element name=“Precio" type="float"/>
</all></complexType>
</element>
49
![Page 50: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/50.jpg)
Ejemplo de petición/respuestaPOST /StockQuote HTTP/1.1
......................
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:ObtenerPrecio xmlns:m="http://example.com/stockquote.xsd">
<item>mesa</item>
</m:ObtenerPrecio>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Petición
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
HTTP/1.1 200 OK
...............
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:ObtenerPrecioResponse xmlns:m="http://example.com/stockquote.xsd">
<Precio>134.5</Precio>
</m:ObtenerPrecioResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Respuesta
50
![Page 51: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/51.jpg)
Transporte de mensajes SOAP
� Protocolo HTTP
� Estilo RPC:
� Petición: método POST
� Respuesta: respuesta al POST
Protocolo SMTP
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Protocolo SMTP
� Simple Mail Transfer Protocol es un protocolo de transferencia de correo en Internet (RFC 2821)
� La especificación indica cómo encapsular mensajes SOAP en mensajes SMTP
51
![Page 52: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/52.jpg)
Desarrollo de un servicio web� Programación de biblioteca de servicio
� En algunos entornos hay que incluir información específica� En VisualStudio .Net: etiqueta [WebMethod] sobre métodos exportados
� Generación automática de fichero WSDL� Generalmente, dentro de la generación de aplicación de servicio
� En VisualStudio .Net: Proyecto de tipo Web Service
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� En servidor: fichero WSDL informa sobre cómo activar servicio� Normalmente, lo hace un servidor web con soporte de servicios web
� Desarrollo de cliente:� Obtener fichero WSDL y generar proxy para aplicación cliente
� En VisualStudio .Net: “Add Web Reference”
52
![Page 53: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/53.jpg)
Ejemplos de servicios web
� Google: http://www.google.com/apis
� Para aplicaciones que relizan búsquedas en Internet
� Amazon:
� http://simplest-shop.com/camera
� Mapquest
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Mapquest
� UPS, Fedex, etc.
53
![Page 54: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/54.jpg)
Otros enlaces de interés
� Main Page http://www.w3.org/
� UDDI Page http://www.uddi.org/
� Cursos sobre SOAP, WSDL y otras tecnologías web:
� http://www.w3schools.com/
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
54
![Page 55: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/55.jpg)
Entornos de desarrollo
� Número creciente de entornos de desarrollo
� Algunas implementaciones de interés:
� gSOAP
� .Net de Microsoft
� Web Services Project de Apache
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Java Web Services Developer Pack
� IBM WebSphere SDK for Web services (WSDK)
� WASP de Systinet
� JOnAS
� AXIS
55
![Page 56: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/56.jpg)
gSOAP
� gSOAP: Generator Tools for Coding SOAP/XML Web Services in C and C++ (Robert van Engelen, University of Florida)
� Entorno de desarrollo independiente de la plataforma para el desarrollo servicios web en C/C++
gSOAP proporciona un compilador que genera código del stub y los
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� gSOAP proporciona un compilador que genera código del stub y los esqueletos de las rutinas para integrar las aplicaciones escritas en C y C++ con los servicos web SOAP/XML
� http://www.cs.fsu.edu/~engelen/soap.html
56
![Page 57: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/57.jpg)
Carcterísticas de gSOAP
� Conversión SOAP�C/C++
� Independiente de la plataforma
� Inicialmente pensado para C++, soporta el desarrollo de aplicaciones escritas en C
� Soporta el desarrollo de aplicaciones stand-alone multithread
Tolerancia a fallos
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Tolerancia a fallos
� Versión de gSOAP sobre UDP
� Soporta las versiones IPv4 e IPv6
� Soporta autenticación HTTP
� Gestión de memoria
� Marshalling/Unmarshalling de datos
57
![Page 58: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/58.jpg)
Desarrollo de una aplicación
Programa servidor
(servidor.c)Especificación de los
tipos y serviciosen ficheros de cabecera (.h)
Programa cliente
(cliente.c)
Aplicación servidor Aplicación cliente
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Biblioteca del servidor
(soapServerLib.c)
Stub servidor
(soapServer.c)Compilador
gSOAP
Conversión de datos soapC.c
Biblioteca del servidor
(soapClientLib.c)
Stub cliente
(soapClient.c)
Ficheros generados Ficheros a implementar
58
![Page 59: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/59.jpg)
Marshalling/unmarshalling
� gSOAP se ocupa del proceso de serialización del código C/C++ a XML (marshalling) y de deserialización de XML a C/C++ (unmarshalling)
struct BG{ int val;struct BG *left;struct BG *right;
<BG><val>1</val>
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
struct BG *right;};
<val>1</val><left><val>2</val><right href=“#X”/></left><right href=“#X”/></BG>
<id id=“X”><val>3</val><right href=“#X”/></id>
1
2
3
59
![Page 60: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/60.jpg)
Herramientas proporcionadas por gSOAP
� Wsdl2h
wsdl2h es un parseador de código WSDL y esquemas de XML que genera un fichero de cabecera con los servicios web y los tipos de datos en C/C++ usados por esos servicios
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
60
� soapcpp2
http://www.cs.fsu.edu/~engelen/soap.html
soapcpp2 es un compilador que a partir de un fichero de cabecera de C/C++ genera código de los stubs del cliente, los esqueletos de los servicios web implementados en el servidor y los ficheros para la serialización/ deserialización de los datos
![Page 61: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/61.jpg)
Ejemplo de uso
� wsdl2h
� donde� XmethodsQuery.h Fichero generado por wsdl2h
� http://www.xmethods.net/wsdl/query.wsdl Fichero de entrada en formato WSDL
� La opción –o nombre_fichero.h especifica el nombre del
wsdl2h -o XMethodsQuery.h http://www.xmethods.net/wsdl/query.wsdl
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� La opción –o nombre_fichero.h especifica el nombre del fichero de salida
� soapcpp2
� donde� XmethodsQuery.h Fichero de cabecera de entrada
� La opción –c especifica que se generará código en el lenguaje C
soapcpp2 -c XMethodsQuery.h
61
![Page 62: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/62.jpg)
Especificación de servicios web en
gSOAP
� Un fichero de cabecera de definición de servicios web puede contener un conjunto de directivas que especifican las propiedades del servicio
� Especificar nombre de servicio
// gsoap namespace-prefix service name: myservice-name
� Especificar una acción SOAPAction para un método
// gsoap namespace-prefix service method-action: method-name-action
� Especificar la localización del servicio mediante una URL
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Especificar la localización del servicio mediante una URL
// gsoap namespace-prefix service location: url
// gsoap namespace-prefix service port:url
� Especificar la URI del espacio de nombres de un servicio web
// gsoap namespace-prefix service namespace: namespace-URI
� Especificar la URI del esquema del espacio de nombres de un servicio web
// gsoap namespace-prefix squema namespace: namespace-URI
62
![Page 63: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/63.jpg)
Ejemplo:
calculadora// contents of file calc.h
// gsoap ns service name: calculator
// gsoap ns service style: rpc
// gsoap ns service encoding: encoded
// gsoap ns service port: http://mydomain/path/calculator.cgi
// gsoap ns service namespace: urn:calculator
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
int ns__add (double a, double b, double *result);
int ns__sub (double a, double b, double *result);
int ns__sqrt (double a, double *result);
63
![Page 64: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/64.jpg)
Invocación de servicios web en gSOAP
� Los servicios web se especifican en un fichero de cabecera (.h) como prototipos de funciones de C++[int] [namespace_prefix__]method_name([inparam1,
inparam2], &outparam)
� Se usan las siguientes convenciones:
� A cada nombre de función del servicio web debe anteponerse un prefijo del espacio de nombres seguido de dos guiones bajos “__”
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Un servicio web siempre devuelve un valor de tipo int que se usa para conocer si el servicio web finalizó con éxito o error
� Un servicio web puede aceptar de 0 a n argumentos de entrada. Todos los argumentos de entrada deben pasarse por valor o usar una referencia de C++ o un puntero de C
� Sólo habrá un argumento de salida para un servicio web, que se especifica como último argumento del servicio web. El argumento de salida debe siempre ser una referencia o un puntero de C
64
![Page 65: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/65.jpg)
El programa cliente (I)
� Antes de invocar uno o varios servicios web el cliente debe crear un entorno de ejecución de gSOAP:
� Inicializar un entorno de ejecución estáticamente. Obligatorio
int soap_init(struct soap *soap)
� Asignar e inicializar un entorno de ejecución. Devuelve un puntero a un
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Asignar e inicializar un entorno de ejecución. Devuelve un puntero a un entorno de ejecución.
struct soap* soap_new()
� Copia el contenido de un entorno de ejecución a otro, de manera que ambos entornos no compartan datos
struct soap* soap_copy(struct soap* soap)
65
![Page 66: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/66.jpg)
El programa cliente (II)
� Un programa cliente podrá invocar los servicios web usando el siguiente prototipo de función:int soap_call_ [namespace_prefix__]method_name(struct soap *soap, char *URL, char *action, [inparam1,
inparam2, …], &outparam)
� Donde� namespace_prefix__ Prefijo del espacio de nombres especificado en el archivo de cabecera
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� namespace_prefix__ Prefijo del espacio de nombres especificado en el archivo de cabecera
� method_name Nombre del servicio web especificado en el archivo de cabecera
� soap Entorno de ejecución de Gsoap del cliente
� URL Localización del servicio web
� action Una acción de las especificadas en el API de SOAP. Si opcional � “”
� inparam1, inparam2,.. La lista de argumentos de entrada: tipo name
� outparam El argumento de salida del servicio web
66
![Page 67: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/67.jpg)
El programa cliente (III)
� Después de invocar uno o varios servicios web el cliente debe eliminar el entorno de ejecución
� Borrar instancias de clases (sólo para C++)
int soap_destroy(struct soap *soap)
� Liberar los recursos de un entorno de ejecución creado estáticamente
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
Liberar los recursos de un entorno de ejecución creado estáticamente
int soap_end()
� Liberar los recursos de un entorno de ejecución creado dinámicamente
int soap_free()
� Eliminar el entorno de ejecución: cierra la comunicación y libera los recursos
int soap_done()
67
![Page 68: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/68.jpg)
El programa servidor (I)
� El programa servidor deberá crear un entorno de ejecución antes de poder proporcionar los servicios web al cliente
� Usa las mismas llamadas que el programa cliente
� Además, el servidor debe:
� Implementar el bucle principal que atiende las peticiones de los clientes. Los servicios web pueden proporcionarse de dos maneras:
� Servidor usando CGI (common Gateway Interface)
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Servidor usando CGI (common Gateway Interface)
� Servidor stand-alone
� Implementar las funciones (servicios web) especificados en el fichero de cabecera de entrada
� Finalmente, destruir el entorno de ejecución cuando quiera dejar de proporcionar los servicios a los clientes
� Usa las mismas llamadas que el programa cliente
68
![Page 69: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/69.jpg)
El programa servidor (II)
� El servidor utiliza el siguiente prototipo de función para activar el servicio web correspondiente al solicitado por el cliente
int soap_serve (struct soap *soap)
� dondesoap Entorno de ejecución de gSOAP en el servidor
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
soap Entorno de ejecución de gSOAP en el servidor
� Implementación del servicio web:� Si el servicio web solicitado es un CGI, entonces el servidor únicamente
deberá invocar la rutina soap_serve
� Si el servicio web solicitado es una función implementada en un servidor stand-alone, el servidor deberá invocar funciones análogas a las usadas en sockets
69
![Page 70: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/70.jpg)
Ejemplo:
programa servidor basado en CGI#include “ soapH.h”
#include “ ns.nsmap ”
int main(){
/* Entorno de ejecución del servidor */
struct soap soap;
/* Inicializar un entorno de ejecución */
soap_init (&soap);
/* Activar un servicio web */
soap_serve (& soap );
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
soap_serve (& soap );
/* Liberar recursos y destruir un entorno de ejecución */
soap_end (&soap);
soap_done (&soap);
exit(0);
}
/* Implementación de los servicios web */
int mi_funcion(input1,input2,output){
/* Algún tratamiento */
return SOAP_OK;
}
70
![Page 71: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/71.jpg)
El programa servidor (III)
� El servidor puede proporcionar los servicios web como stand-alone usando el protocolo HTTP y cualquier puerto
� Para ello deberá usar las siguientes funciones del API de gSOAP (funciones análogas a las de sockets stream)
� Devuelve el socket primario del servidor. Si host es NULL se toma la
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Devuelve el socket primario del servidor. Si host es NULL se toma la máquina en que se ejecuta el servidor
int soap_bind (struct soap *soap, char *host, int port, int backlog)
� Devuelve el socket secundario correspondiente a la conexión entrante
int soap_accept (struct soap *soap)
71
![Page 72: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/72.jpg)
Ejemplo:
programa servidor stand-alone (I)
#include “ soapH.h”
#include “ ns.nsmap ”
int main(){
int m,s;
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
struct soap soap; /* Entorno de ejecución del servid or */
soap_init (&soap); /* Inicializar un entorno de ejecución */
if (m= soap_bind (&soap, “machine.cs.fsu.edu”, 18083, 100))<0){
soap_print_fault (&soap,stderr);
exit(-1);
}
….
72
![Page 73: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/73.jpg)
Ejemplo:
programa servidor stand-alone (II)….
for (int i=1;;i++){
if ((s= soap_accept (&soap))<0){
soap_print_fault (&soap,stderr);
exit(-1);
}
if ( soap_serve (&soap)!=SOAP_OK){ /* Activar un servicio web */
soap_print_fault (&soap,stderr);
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
soap_print_fault (&soap,stderr);
exit(-1);
}
soap_end (&soap); /* limpiar y cerrar socket secundario */
}
soap_done (&soap); /* Destruir un entorno de ejecución */
exit(0);
}
/* Implementación de los servicios web */
73
![Page 74: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/74.jpg)
Ejemplo: programa servidor stand-alone multithread (I)
#include “ soapH.h”
#include “ ns.nsmap ”
int main(){
int m,s;
struct soap soap; /* Entorno de ejecución del servid or */
struct soap *soap2;
soap_init (&soap); /* Inicializar un entorno de ejecución */
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
if (m= soap_bind (&soap, “machine.cs.fsu.edu”, 18083, 100))<0){
soap_print_fault (&soap,stderr);
exit(-1);
}
….
74
![Page 75: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/75.jpg)
Ejemplo: programa servidor stand-alone multithread (II)
….
for (int i=1;;i++){
if ((s= soap_accept (&soap))<0){
soap_print_fault (&soap,stderr);
exit(-1);
}
soap2 = soap_copy(&soap); // make a safe copy if (!soap2)
break ; pthread_create (&tid, NULL, ( void *(*)( void *))process_request, ( void *)soap2);
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
pthread_create (&tid, NULL, ( void *(*)( void *))process_request, ( void *)soap2); } soap_done (&soap); // detach soap struct
} void *process_request(void *soap) {
pthread_detach(pthread_self()); soap_serve ((struct soap*)soap); soap_destroy ((struct soap*)soap); // dealloc C++ data soap_end ((struct soap*)soap); // dealloc data and clean up soap_done ((struct soap*)soap); // detach soap struct return NULL;
}
75
![Page 76: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/76.jpg)
Más ejemplos� WSDL:
� http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL
� Accesible desde http://www.xmethods.com/
� Dos métodos:
string NumberToWords(unsignedLong ubiNum)
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
string NumberToWords(unsignedLong ubiNum)// Returns the word corresponding to the positive number passed as parameter. Limited to quadrillions.
string NumberToDollars(decimal dNum)// Returns the non-zero dollar amount of the passed number
76
![Page 77: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/77.jpg)
Elementos del WSDL<operation name=" NumberToWords ">
<documentation>Returns the word corresponding to th e positive number passed as parameter. Limited to quadrillions . </documentation>
<input message="tns:NumberToWordsSoapRequest" />
<output message="tns:NumberToWordsSoapResponse" />
<message name=" NumberToWordsSoapRequest ">
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
<part name="parameters" element="tns:NumberToWords" />
</message>
<message name=" NumberToWordsSoapResponse ">
<part name="parameters" element="tns:NumberToWordsResponse" />
</message>
77
![Page 78: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/78.jpg)
Elementos del WSDL<xs:element name=" NumberToWords ">
<xs:complexType> <xs:sequence>
<xs:element name=" ubiNum " type=" xs:unsignedLong " /> </xs:sequence>
</xs:complexType> </xs:element>
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
<xs:element name=" NumberToWordsResponse "> <xs:complexType>
<xs:sequence> <xs:element name=" NumberToWordsResult "
type=" xs:string " /> </xs:sequence>
</xs:complexType> </xs:element>
78
![Page 79: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/79.jpg)
Generación de un cliente
� Paso 1: Obtener el archivo de cabecera a partir del WSDL:� wsdl2h -o conversions.h
http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL
Paso 2: Generación de los stub y skeletons a partir del
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Paso 2: Generación de los stub y skeletons a partir del archivo de cabecera � soapcpp2 –C -c conversions.h
� Paso 3: Implementación del cliente
79
![Page 80: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/80.jpg)
Ejemplo:
implementación del programa cliente#include "soapH.h" // obtain the generated stub#include "ConversionsSoapBinding.nsmap"
main(int argc, char **argv){
int err;struct _ns1__NumberToWords arg1;struct _ns1__NumberToWordsResponse arg2;
struct soap * soap = soap_new ();
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
struct soap * soap = soap_new ();
arg1.ubiNum = atoi(argv[1]); // argumento
err = soap_call___ns1__NumberToWords (soap, NULL, NULL, &arg1, &arg2)
if (err == SOAP_OK)printf("Resultado = %s\n", arg2.NumberToWordsResult);
else // an error occurredsoap_print_fault (soap, stderr);
}
80
![Page 81: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/81.jpg)
Compilación y ejecución
� Se compilan los siguientes ficheros fuente y se obtiene el programa client
� cliente.c
� soapC.c
� soapClient.c
Ejectuar
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� Ejectuar� ./client 34
Resultado = thirty four
81
![Page 82: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/82.jpg)
Ejemplo VIII:
Programar un servidor y cliente en TCP
clientesumar(5,2)
5+2
servidor
Máquina A Máquina B
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
NÚCLEO Resultado = 7 NÚCLEO
RED
82
![Page 83: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/83.jpg)
Ejemplo:
programa calculadora
� Paso 1. Fichero de cabecera calculadora.h
// gsoap ns service location: http://localhost:9000
int ns__add (int a, int b, int *result);
int ns__sub (int a, int b, int *result);
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
int ns__sub (int a, int b, int *result);
� Paso 2: generación de stubs y skeletons:
soapcpp2 -c calculadora.h
83
![Page 84: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/84.jpg)
Paso 3:
Desarrollo del servidor (I)#include "soapH.h"
#include "ns.nsmap"
int main(int argc, char **argv){
int m, s; /* master and slave sockets */
struct soap soap;
soap_init(&soap);
if (argc < 2)
soap_serve (& soap ); /* serve as CGI application */
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
soap_serve (& soap ); /* serve as CGI application */
else
{ m = soap_bind (&soap, NULL, atoi(argv[1]), 100);
if (m < 0)
{
soap_print_fault (&soap, stderr);
exit(-1);
}
fprintf(stderr, "Socket connection successful: maste r socket = %d\n", m);
84
![Page 85: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/85.jpg)
Paso 3:
Desarrollo del servidor (II)for ( ; ; ){
s = soap_accept (&soap);fprintf(stderr, "Socket connection successful:
slave socket = %d\n", s);
if (s < 0){
soap_print_fault (& soap , stderr );
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
soap_print_fault (& soap , stderr );exit(-1);
}
soap_serve (&soap);soap_end (&soap);
} /* end for */soap_done (&soap);} /* end else */return 0;
}
85
![Page 86: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/86.jpg)
Paso 3:
Desarrollo del servidor (III)int ns__suma (struct soap *soap, int a, int b, int *res)
{
*res = a + b;
return SOAP_OK;
}
int ns__resta (struct soap *soap, int a, int b, int *res)
{
*res = a - b;
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
*res = a - b;
return SOAP_OK;
}
int ns__sqrt (struct soap *soap, int a, int *res)
{
*res=sqrt(a);
return SOAP_OK;
}
86
![Page 87: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/87.jpg)
Paso 4:
desarrollo del cliente (I)#include "soapH.h"#include "ns.nsmap"
// const char server[] = // "http://websrv.cs.fsu.edu/~engelen/calcserver.cgi ";// const char server[] = "http://localhost:9000";
int main(int argc, char **argv){
struct soap soap ;
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
struct soap soap ;char *server;int a, b, res;
if (argc != 2) {printf("Uso: calcClient http://server:port\n");exit(0);
}
soap_init (&soap);
87
![Page 88: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/88.jpg)
Paso 4:
desarrollo del cliente (II)server = argv[1];a = 5;b = 7;
soap_call_ns__suma (&soap, server, "", a, b, &res);
if (soap.error){
soap_print_fault (& soap , stderr );
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
soap_print_fault (& soap , stderr );exit(1);
}printf("Resultado = %d \n", res);
// soap_destroy (&soap) solo para C++soap_end (&soap);soap_done (&soap);return 0;
}
88
![Page 89: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/89.jpg)
Paso 5: compilación y ejecución
� Cliente:
� calcClient: calcClient.c soapC.c soapClient.c
� Servidor:
� calcServer: calcServer.c soapC.c soapServer.c
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
� >./calcServer 9000
� > ./calcClient http://localhost:9000
89
![Page 90: New Tema 8 - UC3Mocw.uc3m.es/ingenieria-informatica/sistemas-distribuidos... · 2013. 12. 13. · Sistemas Distribuidos Grado en Ingeniería Informática Universidad Carlos III de](https://reader036.fdocuments.ec/reader036/viewer/2022071219/6057c9f743bf6437f2608169/html5/thumbnails/90.jpg)
Bibliografía
� gSOAP 2.8.1 User Guide
� http://www.cs.fsu.edu/~engelen/soapdoc2.pdf
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
90