• No se han encontrado resultados

Programación en Internet (Curso 2007-2008)

N/A
N/A
Protected

Academic year: 2021

Share "Programación en Internet (Curso 2007-2008)"

Copied!
28
0
0

Texto completo

(1)

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

(2)

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

(3)

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.

(4)

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

(5)

Introducción

• ¿Es algo totalmente nuevo?

T

l

í

i t

• Tecnologías integración:

– RPC – CORBA – DCE – RMI – …

Programación en Internet – Curso 2007-2008

(6)

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

(7)

Los pilares

Cliente Registro Proveedor Invoca Busca Publica Invoca

Programació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

(8)

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

(9)

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>

(10)

<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>

(11)

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>

(12)

<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

(13)

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)

(14)

<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

(15)

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

(16)

– Google Search Web Service

http://api.google.com/GoogleSearch.wsdl

(17)

Programación en Internet – Curso 2007-2008

WSDL

• <service>

– Nombre: GoogleSearchService – Dirección: http://api.google.com/search/beta2 – No ofrece documentación

(18)

– 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

(19)

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

(20)

Programación en Internet – Curso 2007-2008

WSDL

• <types>

– Define los tipos de datos de los

parámetros de los mensajes

(21)

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)

(22)

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”

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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

Referencias

Documento similar