XML, Servicios Web y
Web Semántica
Departamento de Informática
Universidad de Oviedo
Servicios Web
Antecedentes y Justificación
SOAP, WSDL, UDDI
Utilización de Servicios Web
Creación de Servicios Web
Departamento de Informática
Universidad de Oviedo
1
Servicios Web
Posible definición
Aplicaciones auto-contenidas, auto-descritas que
pueden ser publicadas, localizadas e invocadas a
través de la Web
Una vez desarrolladas, otras aplicaciones (y otros
servicios Web) pueden descubrirlas e invocar el
servicio dado
Internet
Internet
Petición
Respuesta
Servicio
Web
URL
Servicios Web
Factores que influyeron en su aparición
Computación Distribuida: RPC, CORBA, RMI, DCOM
Sistemas fuertemente acoplados
Integración de aplicaciones: EAI (Enterprise Application Integration)
Reacción frente a sistemas ERP monolíticos
Aparición de XML
Adopción por principales industrias
XML-RPC
Necesidad de intercambios B2B
Sistemas de integración EDI, RosettaNet, ebXML
Comercio electrónico y burbuja de Internet
Necesidad de nuevas fórmulas
Microsoft vs. Java
Compatibilidad
2
Servicios Web
Objetivos
Independencia del lenguaje y de la plataforma
Separación de especificación de la implementación
Interoperabilidad
Utilización de estándares: XML, SOAP, WSDL, UDDI...
Acoplamiento débil: Sistemas basados en mensajes
Interacciones síncronas y asíncronas
A través de Internet
Sin control centralizado
Utilización de Protocolos establecidos
Consideraciones de seguridad
Modularidad y Reusabilidad de servicios
Escalabilidad: Aplicaciones uno-a-uno frente a uno-a-muchos
Servicios Web
Principales Vocabularios
Protocolo de transporte
HTTP/HTTPs (principalmente)
Codificación de datos y mensajes
SOAP (Simple Object Access Protocol)
Descripción del servicio
WSDL (Web Service Description Language)
Búsqueda y localización de servicios
UDDI (Universal Discovery, Description and Integration)
Otra definición
Programas accesibles en Internet que esponen su funcionalidad
recibiendo/enviando mensajes SOAP a través de HTTP(s) y describen su
interfaz en WSDL
3
Servicios Web
Principales Vocabularios
UDDI
UDDI
HTTPHTTP
e
e
ncu
ncu
o
o
btie
btie
n
n
e W
e W
e
e
ntra
ntra
S
S
D
D
L
L
registra
registra
publica W S D L
publica W S D L
petición SOAP (XML)
petición SOAP (XML)
Implementación
Implementación
servicio Web
servicio Web
respuesta SOAP (XML)
respuesta SOAP (XML)
Consumidor
Consumidor
servicio Web
servicio Web
Servicios Web
Arquitectura de Aplicaciones
Base Datos
Base Datos
Servicio Web
Servicio Web
SOAP
SOAP
X SLT
X SLT
XSLTXSLT
XMLXML
X
X
S
S
L
L
T
T
Dispositivo del
Dispositivo del
Cliente
Cliente
HTML
HTML
WMLWML
VoiceXML
VoiceXML
4
Servicios Web
Arquitectura de Aplicaciones
Facturación
Facturación
SOAP
SOAP
SOAP
SOAP
Internet
Internet
XMLXML
SOAP
SOAP
Gestión de
Gestión de
Usuarios
Usuarios
SOAP
SOAP
SOAP
SOAP
Conversión de
Conversión de
Monedas
Monedas
Aplicación
Aplicación
del usuario
del usuario
SOAP
Evolución
SOAP: Define el formato de los mensajes
SOAP = Simple Object Access Protocol
Aunque tiene poco de objetos...
Evolución
Desarrollado a partir de XML-RPC
SOAP 1.0 (1999), 1.1 (2000), 1.2 (2002)
Participación inicial de Microsoft
Adopción posterior de IBM, Sun, etc.
Aceptación industrial
5
SOAP
Formato
Envelope
Envelope
Header
Header
Header Key
Header Key
Header Key
Header Key
BodyBody
<?xml version=‘1.0’ ?>
<soap:Envelope xmlns:soap=‘http://www.w3.org/2001/12/soap-envelope’
xmlns:p =‘http://www.mafia.it/pizzas’>
SOAP
Ejemplo
<soap:Header>
<p:prioridad> urgente </p:prioridad>
<p:origen>
[email protected]</p:origen>
</soap:Header>
<soap:Body>
<p:encargo>
<p:pizza nombre=‘Margarita’>
<p:tamaño>familiar</p:tamaño>
<p:comentario>con mucho queso</p:comentario>
</p:pizza>
</p:encargo>
</soap:Body>
</soap:Envelope>
Cabecera
Cabecera
Contenido
Contenido
6
SOAP
Formato general
SOAP especifica el formato de mensajes
Es independiente del protocolo de transporte
Aunque se define un enlace (binding) con HTTP
envelope: Pueden especificarse datos globales
(codificación, espacios de nombres, etc.)
Contiene: header (opcional) + body (obligatorio)
body contiene datos en formato XML
header contiene meta-información
Extensiones obligatorias/opcionales
SOAP
Header
header incluye información sobre el mensaje
Facilita futuras extensiones
Seguridad, transacciones, etc.
Información procesable por intermediarios
Atributos pre-definidos
mustUnderstand (true/false)
Si el elemento no puede procesar dicha información
devuelve un error
actor
Indica qué nodo debe procesar la información
Si no aparece, debe procesarla el nodo receptor final
7
SOAP
Fault
fault: Formato predefinido de mensajes de error
Se incluye el elemento fault en el cuerpo
Subelementos predefinidos
faultcode: Código del error
Predefinidos: VersionMismatch, MustUnderstand,
DTDNotSupported, DataEncodingUnknown,
Sender, Receiver
faultstring: Explicación legible por personas
detail: Información específica de la aplicación
Puede contener elementos XML
faultactor: URI del nodo que causó el error
<?xml version=‘1.0’ ?>
<soap:Envelope xmlns:soap=‘http://www.w3.org/2001/12/soap-envelope’>
SOAP
Fault
<faultcode>soap:Receiver’</faultcode>
<faultstring>Error al procesar</faultstring>
<detail>
<p:detalles xmlns:p=‘http://www.mafia.it/pizzas’>
<mensaje>La pizza Barbacoa no puede llevar
tanto queso</mensaje>
<soap:Body>
<soap:Fault>
</p:detalles>
</detail>
</p:pizza>
</soap:Fault>
</soap:Body>
</soap:Envelope>
8
SOAP
Codificación
Atributo encodingStyle define reglas de codificación
Algunos tipos básicos predefinidos
Enteros, cadenas, flotantes
Contiene reglas específicas para:
Estructuras
Arrays
Referencias
Se complementa con XML Schemas
Pueden definirse otros sistemas de codificación
Tipos básicos
Tipos básicos
SOAP
Codificación
<?xml version=‘1.0’ ?>
<soap:Envelope xmlns:soap=‘http://www.w3.org/2001/12/soap-envelope’
xmlns:xsi=“http://www.w3.org/2001/XMLSchema”
encodingStyle=‘http://www.w3.org/2001/12/soap-encoding’>
<p:código xsi:type=‘soap:int’>234</p:comida>
<p:tamaño xsi:type =‘soap:string’>familiar</p:tamaño>
<soap:Body>
<p:pizza>
</p:pizza>
</soap:Body>
</soap:Envelope>
9
SOAP
Codificación
<Pizza xmlns=‘cualquier_URI’>
<código>234</código>
<nombre>Barbacoa</nombre>
</Pizza>
Estructuras
Estructuras
struct Pizza {
int código;
string nombre;
};
Arrays
Arrays
<pizzas xsi:type=‘soap:Array’ soap:arrayType=‘p:Pizzas[2]’>
<pizza> <código>234</código>
<nombre>Barbacoa</nombre>
</pizza>
<pizza><código>237</código>
<nombre>Barbacoa</nombre>
</pizza>
</pizzas>
soap:offset=‘[4]’>
<pizza> <código>234</código>
<nombre>Barbacoa</nombre>
</pizza>
<pizza><código>237</código>
<nombre>Barbacoa</nombre>
5º y 6º
5º y 6º
elemento
elemento
Arrays parciales
parciales
Arrays
SOAP
Codificación
<pizzas xsi:type=‘soap:Array’ soap:arrayType=‘p:Pizzas[10]’
</pizza>
</pizzas>
<pizzas xsi:type=‘soap:Array’ soap:arrayType=‘p:Pizzas[10]’>
<pizza soap:position=‘2’> <código>234</código>
<nombre>Barbacoa</nombre>
</pizza>
<pizza soap:position=‘5’ ><código>237</código>
<nombre>Barbacoa</nombre>
</pizza>
</pizzas>
2º y 5º
2º y 5º
elemento
elemento
10
SOAP
Ejemplo con HTTP
POST /Suma/Service1.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: longitod del mensaje
SOAPAction: "http://tempuri.org/suma"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
<soap:Body>
<suma xmlns="http://tempuri.org/">
<a>3</a>
<b>2</b>
</suma>
</soap:Body>
</soap:Envelope>
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
SOAP
Ejemplo de respuesta
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: longitud del mensaje
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
<soap:Body>
<sumaResponse xmlns="http://tempuri.org/">
<sumaResult>5</sumaResult>
</sumaResponse>
</soap:Body>
</soap:Envelope>
11
WSDL
Evolución
WSDL (Web Services Description Language)
Describe:
Qué puede hacer el servicio
Dónde reside
Cómo invocarlo
Vocabulario basado en capas
Es posible concentrarse en una capa cada vez
Evolución: Iniciativa conjunta de Ariba, IBM y Microsoft
(2001) Propuesto a W3C como recomendación (WSDL 1.1)
(2003) En desarrollo WSDL 2.0
WSDL
Estructura del documento
Tipos de datos usados en los mensajes (XML Schema)
Definición abstracta de los datos transmitidos.
Conjunto de operaciones abstractas
Protocolo concreto y especificaciones de los
formatos de las operaciones del mensaje
Especifica una dirección para el enlace definiendo
un único punto de destino
Colección de puntos de destino
definitions
types
message
portType
binding
port
service
12
<?xml version="1.0" encoding="utf-8" ?>
<definitions xmlns:s=. . .
<types>
<s:schema
<s:element name="suma">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="a" type="s:int" />
<s:element minOccurs="1" maxOccurs="1" name="b" type="s:int" />
WSDL
Ejemplo
</s:sequence>
</s:complexType>
</s:element>
</message>
. . .
. . .
<message name="sumaSoapIn">
<part name="parameters" element="s0:suma" />
WSDL
Ejemplo
. . .
<portType name="ServicioSumaSoap">
<operation name="suma">
<input message="s0:sumaSoapIn" />
<output message="s0:sumaSoapOut" />
</operation>
</portType>
. . .
<binding name="ServicioSumaSoap" type="s0:ServicioSumaSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<operation name="suma">
<soap:operation soapAction="http://tempuri.org/suma" style="document" />
<input> <soap:body use="literal" /> </input>
<output> <soap:body use="literal" /> </output>
</operation>
</binding>
<service name="ServicioSuma">
<port name="ServicioSumaSoap" binding="s0:ServicioSumaSoap">
<soap:address location="http://localhost/Suma/Service1.asmx" />
</port>
</service>
</definitions>
13
UDDI
Comentarios de: XML, Servicios Web y Web Semántica (0)
No hay comentarios