Servicios web
Servicios web
Programación en Internet
Curso 2007-2008
Programación en Internet – Curso 2007-2008
Contenido
• Introducción
• Los pilares (SOAP, WSDL, UDDI)
• Desarrollo de un servicio web
Programación en Internet – Curso 2007-2008
Introducción
• Servicios web (web services) son un nuevo modelo de desarrollo de aplicaciones distribuidas basadas en de desarrollo de aplicaciones distribuidas basadas en Internet
• Un servicio web es un componente al que se puede acceder mediante protocolos Web estándar:
– Los mensajes para invocar el servicio se codifican en XML – Los mensajes se pueden transportar utilizando HTTP o
cualquier otro protocolo de transporte estándar
Estándar de W3C • Estándar de W3C
– XML – SOAP – WSDL
Introducción
• Algunas características:
– Permiten que las aplicaciones compartan – Permiten que las aplicaciones compartan
información de forma remota
– Permiten integrar sistemas heterogéneos de manera barata y fiable
– Son unidades de código discretas, cada una de las cuales se encarga de un conjunto limitado de tareas
– Están basados en XML el lenguaje estándar deEstán basados en XML, el lenguaje estándar de intercambio de información en Internet
– Pueden utilizarse en cualquier plataforma o sistema operativo, independientemente del lenguaje de programación utilizado
Programación en Internet – Curso 2007-2008
Introducción
• ¿Qué se puede hacer?
– Los primeros servicios web eran únicamente informativos
– Se están explorando posibles usos
• Posible ejemplo:
– Un servicio de reserva de paquetes de viaje Un servicio de agenda compartido
– Un servicio de agenda compartido
– Consulta de cotizaciones de bolsa, cambio de moneda, datos meteorológicos, etc.
independientes entre sí, pueden
vincularse y formar un grupo de
colaboración para realizar una tarea
determinada Æ Orquestación de
servicios web (web services
(
orchestration)
Programación en Internet – Curso 2007-2008
Introducción
• Ventajas de servicios web:
Menos complejo: sencillos de implementar probar – Menos complejo: sencillos de implementar, probar
y usar
– Basado en protocolos abiertos de la Web (XML, HTTP y TCP/IP) ampliamente aceptados Æ Intoreparibilidad total
– Al emplear protocolos de comunicación estándar (HTTP), normalmente atraviesa firewalls y routers
( ), y
sin problemas
– Se puede utilizar tanto de forma anónima como con autenticación (nombre/clave) y a través de HTTPS
Introducción
• ¿Es algo totalmente nuevo?
T
l
í
i t
ió
• Tecnologías integración:
– RPC – CORBA – DCE – RMI – …Programación en Internet – Curso 2007-2008
SOAP: Simple Object Access Protocol (Protocolo – SOAP: Simple Object Access Protocol (Protocolo
de acceso a objetos simple)
– WSDL: Web Services Description Language (Lenguaje de descripción de servicios web) – UDDI: Universal Description, Discovery, and
Integration (Descripción, descubrimiento e
integración universales)g )
• Servicio web: software accesible en la Web
a través de SOAP, descrito con un fichero
WSDL y registrado en UDDI
Programación en Internet – Curso 2007-2008
Los pilares
I t f d l i i D b i i t d Interfaz del servicio y
descripción WSDL Descubrimiento de servicio, publicación y registro UDDI
Protocolo de mensajes e invocación
SOAP
Lengua franca
XML
Red y protocolos de transporte
Los pilares
Cliente Registro Proveedor Invoca Busca Publica InvocaProgramación en Internet – Curso 2007-2008
SOAP
• Simple Object Access Protocol
• Tecnología de mensajería basada en XML queTecnología de mensajería basada en XML que especifica todas las reglas necesarias para ubicar servicios web, integrarlos en aplicaciones y
establecer la comunicación entre ellos • Recomendación: http://www.w3.org/TR/soap
• Implementaciones de SOAP:
– http://www.soapware.org/directory/4/implementations – IBM Web Services Toolkit
– Microsoft SOAP Toolkit 3.0
– Sun Java Web Services Developer Pack 1.3 – PHP-SOAP, NuSOAP
SOAP Envelope
SOAP Header
SOAP Body
Programación en Internet – Curso 2007-2008
SOAP
• Envelope: define los espacios de nombres
(namespaces) que serán empleados en el resto del (namespaces) que serán empleados en el resto del mensaje. Los valores típicos son:
– xmlns:SOAP-ENV Æ SOAP Envelope namespace – xmlns:xsi Æ XML Schema for Instances
– xmlns:xsd Æ XML Schema for DataTypes
• Header: elemento opcional que proporciona información auxiliar para los procesos de autentificación las transacciones y los pagos autentificación, las transacciones y los pagos
• Body: es la parte principal del mensaje y contiene el nombre del método y los parámetros necesarios para invocar el servicio web
SOAP
• Con SOAP podemos intercambiar
cualquier documento XML, pero no otro
tipo (imágenes, documentos PDF, etc.)
• SOAP with Attachment (SwA) Æ SOAP
Message Transmission Optimization
Mechanism:
Mechanism:
– Permite añadir datos que no sean XML al
mensaje
– Parte adjunta (attachment)
Programación en Internet – Curso 2007-2008
SOAP
POST /soap/servlet/rpcrouter HTTP/1.0 Host: localhost:8070
Content Type: text/xml Content-Type: text/xml Content-Length: 461 SOAPAction: "" <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <ns1:getRate xmlns:ns1="urn:demo1:exchange"g g SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding /"> <country1 xsi:type="xsd:string">USA</country1> <country2 xsi:type="xsd:string">japan</country2> </ns1:getRate> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
<Envelope> <Body> <getRate> <country1>USA</country1> <country2>japan</country2> </getRate>g </Body> </Envelope>
Programación en Internet – Curso 2007-2008
SOAP
HTTP/1.0 200 OK
Content-Type: text/xml; charset=UTF-8 Content-Length: 425
Set-Cookie2: Set Cookie2:
JSESSIONID=4x1b3dqoc1;Version=1;Discard;Path="/soap" Set-Cookie: JSESSIONID=4x1b3dqoc1;Path=/soap
Servlet-Engine: Tomcat Web Server/3.2 (final) (JSP 1.1; Servlet 2.2; Java 1.3.0; Windows 2000 5.0 x86; java.vendor=Sun Microsystems Inc.)
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <SOAP-ENV:Body> <ns1:getRateResponse xmlns:ns1="urn:demo1:exchange" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding /"> <return xsi:type="xsd:float">144.52</return> </ns1:getRateResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
SOAP
<Envelope> <Body> <getRateResponse> <return>144.52</return> </getRateResponse> </Body> </Envelope>Programación en Internet – Curso 2007-2008
SOAP
HTTP/1.0 500 Internal Server Error Content-Type: text/xml; charset=UTF-8 Content-Length: 411
ki 2 Set-Cookie2:
JSESSIONID=ha5k5ds6h1;Version=1;Discard;Path="/soap" Set-Cookie: JSESSIONID= ha5k5ds6h1;Path=/soap
Servlet-Engine: Tomcat Web Server/3.2 (final) (JSP 1.1; Servlet 2.2; Java 1.3.0; Windows 2000 5.0 x86; java.vendor=Sun Microsystems Inc.)
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">p g <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode>
<faultstring>cannot calculate rate</faultstring> <faultactor>/soap/servlet/rpcrouter</faultactor> </SOAP-ENV:Fault>
<Envelope> <Body>
<Fault>
<faultcode>SOAP-ENV:Server</faultcode> <faultcode>SOAP ENV:Server</faultcode>
<faultstring>cannot calculate rate</faultstring> <faultactor>/soap/servlet/rpcrouter</faultactor> </Fault>
</Body> </Envelope>
Programación en Internet – Curso 2007-2008
WSDL
• Web Services Description Language
L
j
d
ibi l
i i
b
• Lenguaje para describir los servicios web
como una serie de operaciones que operan
sobre mensajes
• Las operaciones y mensajes se describen de
forma abstracta y no están ligados a ningún
lenguaje de programación concreto
g
j
g
WSDL
• WSDL permite que un servicio web se
describa a sí mismo:
describa a sí mismo:
– Proporciona:
• URL del endpoint (punto de conexión al servicio) • Nombre de la función a llamar
• Nombre y tipo de los parámetros • Tipo del valor de retorno
• …
– De esta forma una aplicación podrá conocer cuál es la interfaz del servicio, y podrá integrarlo y utilizarlo de forma automática
Programación en Internet – Curso 2007-2008
WSDL
• Un WSDL se crea:
• A mano
• Clases Æ Generación automática del WSDL
• Un WSDL se utiliza:
• A mano
• WSDL Æ Generación automática de un cliente (clases)
<d fi iti > – <definitions>:
• El elemento raíz del documento
• Suele incluir la declaración de espacios de nombres
– <types>:
• Proporciona definiciones de tipos de datos que se emplean para definir los mensajes empleados en la comunicación
P d l XML S h • Podemos emplear XML Schema
Programación en Internet – Curso 2007-2008
WSDL
• Un servicio web se define por medio de:
– <message>:<message>:
• Representación abstracta de los mensajes que se intercambian en la comunicación
• Un mensaje está compuesto de parámetros <part> con un tipo (de los definidos en <types>)
• Cada operación tendrá un mensaje de entrada (petición) y uno de salida (respuesta)
– <portType>:
• Define un conjunto abstracto de operaciones (<operation>)Define un conjunto abstracto de operaciones (<operation>) que ofrece el servicio
• Cada operación contiene un mensaje de entrada (<input>) y un mensaje de salida (<output>) de los anteriores (referencia a <message>)
• Se necesita un puerto abstracto por cada protocolo soportado: por conveniencia se coloca como sufijo el nombre del
WSDL
• Un servicio web se define por medio de:
– <binding>:<binding>:
• Conexión entre interfaz e implementación, especifica: – Estilo de llamada (rpc, document, etc.)
» Consultar:
http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/
– Protocolo utilizado y especificaciones de formatos de datos para las operaciones y mensajes definidos en un portType particular – Método de transporte de datos (HTTP, SMTP, etc.)
Localización del servicio – Localización del servicio
– <service>:
• Define un servicio mediante una colección de puertos a los que acceder (agrega un conjunto de <port> relacionados)
• <port>:
– Especifica una dirección (URL) para un <binding>, es decir, define un punto de comunicación concreto (endpoint)
• Contiene documentación en lenguaje natural sobre el servicio
Programación en Internet – Curso 2007-2008
definitions types message Documento WSDL message part portType operation input output Interfaz output binding service port Implementación
– Google Search Web Service
–
http://api.google.com/GoogleSearch.wsdl
Programación en Internet – Curso 2007-2008
WSDL
• <service>
– Nombre: GoogleSearchService – Dirección: http://api.google.com/search/beta2 – No ofrece documentación– Ofrece tres operaciones:
• doGetCachedPage • doSpellingSuggestion • doGoogleSearch
– El método de llamada es RPC – El protocolo utilizado es SOAP
– El método de transporte de datos es HTTP
WSDL
• <portType>
– Define las operaciones, con una referencia al mensaje de entrada y al mensaje de salida
Programación en Internet – Curso 2007-2008
WSDL
• <message>
– Define los parámetros de los mensajes de
entrada y salida
– Para cada parámetro se indica su tipo de
dato
Programación en Internet – Curso 2007-2008
WSDL
• <types>
– Define los tipos de datos de los
parámetros de los mensajes
Programación en Internet – Curso 2007-2008
• ¿Qué operaciones proporciona Google?
GoogleSearchResult doGoogleSearch(key as string, q as string, start as int, maxResults as int, filter as boolean, restrict as string, safeSearch as boolean, lr as string, ie as string, oe as string)
Solicit-response Operation Notification Operation Web Service Mess. Input 1 Web Service Mess. Input 1 Mess. Output 2 1 Mess. Fault Web Service Mess. Input 1 Mess. Output 2 Web Service Mess. Output 1 Mess. Fault
Programación en Internet – Curso 2007-2008
UDDI
• Universal Description, Discovery, and
Integration
• Es un registro público gratuito en el que
se pueden publicar y enviar consultas
acerca de los servicios web
• Es similar a unas “páginas amarillas de
• Es similar a unas páginas amarillas de
servicios web”
UDDI
• Búsqueda automática o manual
• Un usuario podrá buscar un servicio web en
base a distintos criterios:
– Precio
– Rendimiento (tiempo de respuesta) – Fiabilidad (24x7)
– …
• Registros:
– Públicos
– Privados (empresa u organización): para compartir y reutilizar código internamente
Programación en Internet – Curso 2007-2008
un desarrollo heredado o de un nuevo
producto
Programación en Internet – Curso 2007-2008
Desarrollo de un servicio web
Sistema de información
Servidor
Desarrollo de un servicio web
2. El proveedor desarrolla y publica un
interfaz basado en un servicio web.
Esto incluye la publicación automática,
en la Web, de un descriptor del servicio
(WSDL)
Programación en Internet – Curso 2007-2008
Desarrollo de un servicio web
Sistema de información
Descriptor del servicio web Servicio web
Servidor
sistema de información propio basado
en el servicio web, construye
automáticamente, a partir del descriptor
del servicio, las clases proxy (stub) que
le permitirán acceder al servicio web
p
desde sus aplicaciones
Programación en Internet – Curso 2007-2008
Desarrollo de un servicio web
Sistema de información
Descriptor del servicio web Servicio web
Servidor
Sistema de información
Clases proxy
Desarrollo de un servicio web
4. El cliente desarrolla la parte cliente que
consumirá el servicio web, usando las
clases proxy
Programación en Internet – Curso 2007-2008
Desarrollo de un servicio web
Sistema de información
Descriptor del servicio web Servicio web Servidor Sistema de información Cliente consumidor Clases proxy Cliente
emplear el servicio web
Programación en Internet – Curso 2007-2008
Desarrollo de un servicio web
Sistema de información
Descriptor del servicio web Servicio web Servidor Sistema de información Cliente consumidor Clases proxy Cliente