Top Banner
Aplicaciones de Internet: Servicios Web Grupo ARCOS Desarrollo de Aplicaciones Distribuidas Ingeniería Informática Universidad Carlos III de Madrid
42

L10 servicio web-v1b

Apr 15, 2017

Download

Education

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: L10 servicio web-v1b

Aplicaciones de Internet:

Servicios Web

Grupo ARCOS

Desarrollo de Aplicaciones Distribuidas

Ingeniería Informática

Universidad Carlos III de Madrid

Page 2: L10 servicio web-v1b

Contenidos

1. Introducción a los servicios Web

2. Elementos en un Servicio Web:1. XML2. SOAP

ARCOS @ UC3M2

2. SOAP3. WSDL4. UDDI

3. Ejemplo de aplicación� Bolsa (servicio público)

Page 3: L10 servicio web-v1b

Contenidos

1. Introducción a los servicios Web

2. Elementos en un Servicio Web:1. XML2. SOAP

ARCOS @ UC3M3

2. SOAP3. WSDL4. UDDI

3. Ejemplo de aplicación� Bolsa (servicio público)

Page 4: L10 servicio web-v1b

Servicios Web

� 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

ARCOS @ UC3M4

� El objetivo es ofrecer una plataforma para construir aplicaciones distribuidas utilizando software:� Que ejecuta en diferentes sistemas operativos y arquitecturas

� Escrito utilizando diferentes lenguajes y herramientas de programación

� Desarrollado de forma independiente

Page 5: L10 servicio web-v1b

Componentes e infraestructura

Aplicaciones

Servicios de directorio Seguridad

ARCOS @ UC3M5

WSDLWeb Services

XML

SOAP

URI HTTP, SMTP u otros

Page 6: L10 servicio web-v1b

Componentes e infraestructura

WSDL

AplicacionesServicios de

directorio

Web Services

XML

SOAP

URI HTTP, SMTP u otros

Seguridad

ARCOS @ UC3M6

XMLURI HTTP, SMTP u otros

� HTTP: transporte utilizado

� SOAP: empaqueta la información y la transmite entre el cliente y el proveedor del servicio

� XML: describe la información, los mensajes

� UDDI: lista de servicios disponibles

� WSDL: descripción del servicio

Page 7: L10 servicio web-v1b

Servicios Web y SOA

Cliente

Petición(SOAP)

Búsqueda(UDDI)

2233

ARCOS @ UC3M7

Proveedor de Servicio (servidor)

Servicio de directorios

Publica(WSDL)

(SOAP) (UDDI)

11

Page 8: L10 servicio web-v1b

Escenario de uso

Búsqueda de servicio

Escribir la

Repositorio deServicios web

(UDDI)

RegistrarWSDL

http get

Fichero WSDL

11

22

ARCOS @ UC3M8

Escribir la Aplicación

cliente

cliente

Proveedor de servicio

Publicarservicio

WSDL

Petición SOAP

Respuesta SOAP

33

Page 9: L10 servicio web-v1b

Ejemplo de implantación

ClienteServidor Servidor Servidor de

Proveedor del servicio Web

ARCOS @ UC3M9

ClienteServidor

HTTPServidorSOAP

Servidor de aplicaciones

Page 10: L10 servicio web-v1b

Respecto a la implantación

� Una interfaz de servicio web consta de un conjunto de operaciones utilizables por un cliente en Internet� Los servicios Web no son específicos de HTTP.

� Las operaciones en un servicio Web pueden ser

ARCOS @ UC3M10

� Las operaciones en un servicio Web pueden ser ofrecidas por:� Programas, objetos, bases de datos

� Un servicio Web puede ser manejado por:� Un servidor web tradicional

� Un servidor independiente

Page 11: L10 servicio web-v1b

Más información

• Sobre protocolos:– SOAP, XML, etc.: http://www.w3.org/– UDDI: http://www.uddi.org/

• Cursos sobre SOAP, WSDL y otras tecnologías web:

ARCOS @ UC3M11

• Cursos sobre SOAP, WSDL y otras tecnologías web:– http://www.w3schools.com/

• Repositorios de servicios Web:– http://www.xmethods.com/– Google: http://www.google.com/apis

• Para aplicaciones que realizan búsquedas en Internet

Page 12: L10 servicio web-v1b

Entornos de desarrollo

� Número creciente de entornos de desarrollo

� Algunas implementaciones de interés:� gSOAP� .Net de Microsoft

ARCOS @ UC3M12

� Web Services Project de Apache� Java Web Services Developer Pack� IBM WebSphere SDK for Web services (WSDK)� WASP de Systinet� JOnAS� AXIS

Page 13: L10 servicio web-v1b

Contenidos

1. Introducción a los servicios Web

2. Elementos en un Servicio Web:1. XML2. SOAP

ARCOS @ UC3M13

2. SOAP3. WSDL4. UDDI

3. Ejemplo de aplicación� Bolsa (servicio público)

Page 14: L10 servicio web-v1b

XML

• Extensible markup language– Definido por W3C (http://www.w3c.org)

• XML es extensible, permite a los usuarios definir sus propias etiquetas (diferente a HTML)

• Componentes:

ARCOS @ UC3M14

• Componentes:– Elementos y atributos

– <tag attr=valor/>– <tag>valor</tag>

– Espacios de nombres – xmlns="http://www.w3.org/1999/xhtml”

– Esquemas• Elementos y atributos que pueden aparecer en un documento

Page 15: L10 servicio web-v1b

Ejemplo de XML

• Ej: float ObtenerPrecio(string item);

Petición:

<ObtenerPrecio>

<item>mesa</item>

ARCOS @ UC3M15

<item>mesa</item>

</ObtenerPrecio>

Respuesta:

<ObtenerPrecioResponse>

<Precio>134.5</Precio>

</ObtenerPrecioResponse>

Page 16: L10 servicio web-v1b

Ejemplo de XML

• Ej: float ObtenerPrecio(string item);

Petición:

<ObtenerPrecio>

<item>mesa</item>

Esquema:

<element name=“ObtenerPrecio">

<complexType><all>

ARCOS @ UC3M16

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

Page 17: L10 servicio web-v1b

Contenidos

1. Introducción a los servicios Web

2. Elementos en un Servicio Web:1. XML2. SOAP

ARCOS @ UC3M17

2. SOAP3. WSDL4. UDDI

3. Ejemplo de aplicación� Bolsa (servicio público)

Page 18: L10 servicio web-v1b

SOAP

� Simple Object Accces Protocol� http://www.w3.org

� SOAP especifica:� Cómo representar los mensajes en XML

ARCOS @ UC3M18

� Cómo representar los mensajes en XML� Como combinar mensajes SOAP

para un modelo petición-respuesta� Cómo procesar los elementos de los mensajes� Cómo utilizar el transporte (HTTP, SMTP, …)

para enviar mensajes SOAP

Page 19: L10 servicio web-v1b

Mensaje SOAP

� Unidad básica de comunicaciónentre nodos SOAP

� El mensaje es transportado enun envelope

� Encabezado opcional

envelope

header header element

header element

19

� Encabezado opcional� Cuerpo

� Los elementos XML anterioresson definidos como un esquemaen el espacio de nombres XML

� Esquema definido en http://www.w3.org

body

header element

body element

body element

ARCOS @ UC3M

Page 20: L10 servicio web-v1b

Ejemplo

de petición/respuesta <ObtenerPrecio>

<item>mesa</item>

</ObtenerPrecio>

“ ”

POST /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/">

Servidor

20 ARCOS @ UC3M

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>

Page 21: L10 servicio web-v1b

Ejemplo

de petición/respuesta <ObtenerPrecioResponse>

<precio>134.5</precio>

</ObtenerPrecioResponse>

“ ”

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

Servidor

21 ARCOS @ UC3M

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>

Page 22: L10 servicio web-v1b

Contenidos

1. Introducción a los servicios Web

2. Elementos en un Servicio Web:1. XML2. SOAP

ARCOS @ UC3M22

2. SOAP3. WSDL4. UDDI

3. Ejemplo de aplicación� Bolsa (servicio público)

Page 23: L10 servicio web-v1b

WSDL

• WSDL: Web Services Description Language – IDL para servicios Web en XML

• Se utiliza para: – Describir servicios Web

• Especificalasoperacionesy métodosdel servicio

ARCOS @ UC3M23

• Especificalasoperacionesy métodosdel servicio– Localizar servicios Web

• WSDL es un documento XML – Escrito en XML– Estándar descrito por la W3C

• http://www.w3.org/TR/wsdl • http://www.w3.org/TR/wsdl20

Page 24: L10 servicio web-v1b

Ejemplo de WSDL

� Normalmente generado automáticamente, 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/">

<xs:element name="NumberToWords">

ARCOS @ UC3M24

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

Page 25: L10 servicio web-v1b

Ejemplo de WSDL

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

ARCOS @ UC3M25

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

Page 26: L10 servicio web-v1b

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

26

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

ARCOS @ UC3M

Page 27: L10 servicio web-v1b

Estructura de un documento WSDL

<definitions> <types>

definición de tipos (independientes del lenguajes)</types> <message>

definición de mensajes (a intercambiar)</message> <interfaz>

ARCOS @ UC3M27

<interfaz> definición de puertos (interfaz de funciones, incluyen do 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 pu ertos donde se dá)</services>

</definitions>

Page 28: L10 servicio web-v1b

Espacio de nombres

� Definido por el W3C:http://www.w3.org/2001/XMLSchema

� Objetivo: evitar conflictos� Dos servicios web distintos A y B que tienen un

ARCOS @ UC3M28

� 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

Page 29: L10 servicio web-v1b

Contenidos

1. Introducción a los servicios Web

2. Elementos en un Servicio Web:1. XML2. SOAP

ARCOS @ UC3M29

2. SOAP3. WSDL4. UDDI

3. Ejemplo de aplicación� Bolsa (servicio público)

Page 30: L10 servicio web-v1b

UDDI

� Universal Description, Discovery, and Integration

� No estándar: Propuesta inicial de Microsoft, IBM y Ariba

� Registro distribuido de servicios web ofrecidos por empresas

� Información clasificada en 3 categorías (guías):� Páginas blancas: Datos de la empresa

� Páginas amarillas: Clasificación por tipo de actividades

ARCOS @ UC3M30

� 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

Page 31: L10 servicio web-v1b

URI, URL y URN

� Cada servicio Web tiene una URI(Uniform Resource Identifier):� URL (uniform resource locator)

� Incluyen la localización del recurso (hostname+pathname)

� URN (uniform resource name)

ARCOS @ UC3M31

� Nombres de recursos que no incluyen localización

� Los clientes usan la URI para referenciar el servicio

� Existen servicios de localización de servicios (directorios) � URN -> URL

� Permiten transparencia de localización

Page 32: L10 servicio web-v1b

Contenidos

1. Introducción a los servicios Web

2. Elementos en un Servicio Web:1. XML2. SOAP

ARCOS @ UC3M32

2. SOAP3. WSDL4. UDDI

3. Ejemplo de aplicación� Bolsa (servicio público)

Page 33: L10 servicio web-v1b

Plataforma de desarrollo

� gSOAP

� Conjunto de herramientas para el desarrollo de aplicaciones basadas en servicios Web en C/C++

� http://www.cs.fsu.edu/~engelen/soap.html

ARCOS @ UC3M33

� http://www.cs.fsu.edu/~engelen/soap.html

Félix García Carballeira y Alejandro Calderón Mateos

Page 34: L10 servicio web-v1b

Desarrollo del servidor

Implementación de serviciosEspecificación de los

tipos y serviciosen ficheros de

ARCOS @ UC3M34Félix García Carballeira y Alejandro Calderón Mateos

skeleton

Activador de peticiones

en ficheros de cabecera (.h)

CompiladorgSOAP

WSDL

Page 35: L10 servicio web-v1b

Desarrollo del cliente

Especificación de los tipos y serviciosen ficheros de

ARCOS @ UC3M35Félix García Carballeira y Alejandro Calderón Mateos

en ficheros de cabecera (.h)

stubs

Aplicación Cliente

WSDL

CompiladorgSOAP

Page 36: L10 servicio web-v1b

Ejemplo: cotizaciones

� WSDL:� http://www.webservicex.com/stockquote.asmx?WSDL

� Accesible desde:http://www.xmethods.com/

� Descrito en: http://www.webservicex.com/stockquote.asmx?op=GetQuote

ARCOS @ UC3M36

http://www.webservicex.com/stockquote.asmx?op=GetQuote

� Tres métodos:

string GetQuote (char *symbol)// Returns the last quote (and more) from the company// represented by ‘symbol’.

Félix García Carballeira y Alejandro Calderón Mateos

Page 37: L10 servicio web-v1b

Generación de la interfaz a partir del WSDL

acaldero@guernika# wsdl2h -c \- o quote .h \

ARCOS @ UC3M37

- o quote .h \http://www.webservicex.com/stockquote.asmx?WSDL

Félix García Carballeira y Alejandro Calderón Mateos

Page 38: L10 servicio web-v1b

Preprocesado de la interfaz a C

acaldero@guernika # soapcpp2 –C - c quote .h

ARCOS @ UC3M38

acaldero@guernika # soapcpp2 –C - c quote .h

Félix García Carballeira y Alejandro Calderón Mateos

Page 39: L10 servicio web-v1b

Client.c

#include "soapH.h"#include " StockQuoteSoap.nsmap "

int main(int argc, char **argv){

struct soap soap;struct _ns1__GetQuote arg1 ;struct _ns1__GetQuoteResponse arg2 ;

ARCOS @ UC3M39

struct _ns1__GetQuoteResponse arg2 ;

arg1.symbol = argv[1];soap_init (&soap);

if ( soap_call___ns2__GetQuote (&soap,NULL,NULL,&arg1,&arg2)==0)printf("Result: %s\n", arg2.GetQuoteResult);

else soap_print_fault(&soap, stderr);return 0;

}

Félix García Carballeira y Alejandro Calderón Mateos

Page 40: L10 servicio web-v1b

Compilación del ejemploguernika.lab.inf.uc3m.es

# gcc -g -c client.c -I/opt/gsoap-linux-2.7/ -o client.o

# gcc -g -c soapC.c -I/opt/gsoap-linux-2.7/ -o soapC.o

# gcc -g -c soapClient.c -I/opt/gsoap-linux-2.7/ -o soapClient.o

# gcc -Wall -g -I/opt/gsoap-linux-2.7/ \

ARCOS @ UC3M40

# gcc -Wall -g -I/opt/gsoap-linux-2.7/ \-c /opt/gsoap-linux-2.7/stdsoap2.c -o stdsoap2.o

# gcc -o client client.o soapClient.o soapC.o stdsoap2.o

Félix García Carballeira y Alejandro Calderón Mateos

Page 41: L10 servicio web-v1b

Ejecución del ejemplo guernika.lab.inf.uc3m.es

acaldero@guernika # ./client AAPL

Result: <StockQuotes><Stock><Symbol>AAPL</Symbol><Last>188.50</Last><Date>10/30/2009</Date><Time>3:00pm</Time><Change>-7.85</Change><Open>196.18</Open><High>196.80</High><Low>186.06

ARCOS @ UC3M41

7.85</Change><Open>196.18</Open><High>196.80</High><Low>186.0667</Low><Volume>25625842</Volume><MktCap>169.8B</MktCap><PreviousClose>196.35</PreviousClose><PercentageChange>-4.00%</PercentageChange><AnnRange>78.20 -208.71</AnnRange><Earns>6.289</Earns><P-E>31.22</P-E><Name>Apple Inc.</Name></Stock></StockQuotes>

Félix García Carballeira y Alejandro Calderón Mateos

Page 42: L10 servicio web-v1b

Aplicaciones de Internet:

Servicios Web

Grupo ARCOS

Desarrollo de Aplicaciones Distribuidas

Ingeniería Informática

Universidad Carlos III de Madrid