Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Web Semntica
Departamento de Informtica
Universidad de Oviedo
Servicios Web
Antecedentes y Justificacin
SOAP, WSDL, UDDI
Utilizacin de Servicios Web
Creacin de Servicios Web
Departamento de Informtica
Universidad de Oviedo
Servicios Web
Posible definicin
Aplicaciones auto-contenidas, auto-descritas que
pueden ser publicadas, localizadas e invocadas a
travs de la Web
Una vez desarrolladas, otras aplicaciones (y otros
servicios Web) pueden descubrirlas e invocar el
servicio dado
Peticin
Internet
Servicio
Web
Respuesta
URL
Servicios Web
Factores que influyeron en su aparicin
ComputacinDistribuida:RPC,CORBA,RMI,DCOM
Sistemasfuertementeacoplados
Integracindeaplicaciones:EAI(Enterprise Application Integration)
ReaccinfrenteasistemasERPmonolticos
AparicindeXML
Adopcinporprincipalesindustrias
XMLRPC
NecesidaddeintercambiosB2B
SistemasdeintegracinEDI,RosettaNet,ebXML
ComercioelectrnicoyburbujadeInternet
Necesidaddenuevasfrmulas
Microsoftvs.Java
Compatibilidad
Servicios Web
Objetivos
Independencia dellenguajeydelaplataforma
Separacindeespecificacindelaimplementacin
Interoperabilidad
Utilizacindeestndares:XML,SOAP,WSDL,UDDI...
Acoplamientodbil:Sistemasbasadosenmensajes
Interaccionessncronas yasncronas
AtravsdeInternet
Sincontrolcentralizado
UtilizacindeProtocolosestablecidos
Consideracionesdeseguridad
Modularidad yReusabilidad deservicios
Escalabilidad: Aplicacionesunoaunofrenteaunoamuchos
Servicios Web
Principales Vocabularios
Protocolodetransporte
HTTP/HTTPs (principalmente)
Codificacindedatosymensajes
SOAP(SimpleObject AccessProtocol)
Descripcindelservicio
WSDL(WebService Description Language)
Bsquedaylocalizacindeservicios
UDDI(UniversalDiscovery,Description and Integration)
Otra definicin
Programas accesibles en Internet que esponen su funcionalidad
recibiendo/enviando mensajes SOAP a travs de HTTP(s) y describen su
interfaz en WSDL
Servicios Web
Principales Vocabularios
UDDI
ra
L
ist
g
SD
re
W
a
HTTP
lic
b
u
p
en
ob
cu
tie
en
ne
tra
W
SD
L
petici
peticin SOAP (XML)
Implementaci
Implementacin
servicio Web
Consumidor
servicio Web
Servicios Web
Arquitectura de Aplicaciones
Dispositivo del
Cliente
Base Datos
HTML
LT
XS
XML
SOAP
Servicio Web
XSLT
WML
XS
LT
VoiceXML
Servicios Web
Arquitectura de Aplicaciones
Facturaci
Facturacin
SOAP
SOAP
Internet
SOAP
XML
SOAP
Gesti
Gestin de
Usuarios
Aplicaci
Aplicacin
del usuario
SOAP
Conversi
Conversin de
Monedas
SOAP
Evolucin
SOAP: Define el formato de los mensajes
SOAP = Simple Object Access Protocol
Aunque tiene poco de objetos...
Evolucin
Desarrollado a partir de XML-RPC
SOAP 1.0 (1999), 1.1 (2000), 1.2 (2002)
Participacin inicial de Microsoft
Adopcin posterior de IBM, Sun, etc.
Aceptacin industrial
SOAP
Formato
Envelope
Header
Header Key
Header Key
Body
SOAP
Ejemplo
Cabecera
Contenido
SOAP
Formato general
SOAPespecifica elformato demensajes
Esindependiente delprotocolo detransporte
Aunque sedefineunenlace(binding)conHTTP
envelope:Pueden especificarse datos globales
(codificacin,espacios denombres,etc.)
Contiene:header(opcional)+body(obligatorio)
bodycontiene datos enformato XML
headercontiene metainformacin
Extensiones obligatorias/opcionales
SOAP
Header
header incluyeinformacinsobreelmensaje
Facilitafuturasextensiones
Seguridad,transacciones,etc.
Informacinprocesableporintermediarios
Atributospredefinidos
mustUnderstand (true/false)
Sielelementonopuedeprocesardichainformacin
devuelveunerror
actor
Indicaqu nododebeprocesarlainformacin
Sinoaparece,debeprocesarlaelnodoreceptorfinal
SOAP
Fault
fault:Formatopredefinidodemensajesdeerror
Seincluyeelelementofault enelcuerpo
Subelementos predefinidos
faultcode:Cdigodelerror
Predefinidos:VersionMismatch,MustUnderstand,
DTDNotSupported,DataEncodingUnknown,
Sender,Receiver
faultstring:Explicacinlegibleporpersonas
detail:Informacinespecficadelaaplicacin
PuedecontenerelementosXML
faultactor:URIdelnodoquecaus elerror
SOAP
Fault
<?xml version=1.0 ?>
<soap:Envelope xmlns:soap=http://www.w3.org/2001/12/soap-envelope>
<soap:Body>
<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>
</p:detalles>
</detail>
</p:pizza>
</soap:Fault>
</soap:Body>
</soap:Envelope>
SOAP
Codificacin
Atributo encodingStyle definereglas decodificacin
Algunos tipos bsicos predefinidos
Enteros,cadenas,flotantes
Contiene reglas especficas para:
Estructuras
Arrays
Referencias
Secomplementa conXMLSchemas
Pueden definirse otros sistemas decodificacin
SOAP
Codificacin
Tipos b
bsicos
<?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>
<soap:Body>
<p:pizza>
<p:cdigo xsi:type=soap:int>234</p:comida>
<p:tamao xsi:type =soap:string>familiar</p:tamao>
</p:pizza>
</soap:Body>
</soap:Envelope>
SOAP
Codificacin
Estructuras
struct Pizza {
int cdigo;
string nombre;
};
<Pizza xmlns=cualquier_URI>
<cdigo>234</cdigo>
<nombre>Barbacoa</nombre>
</Pizza>
Arrays
<pizzas xsi:type=soap:Array soap:arrayType=p:Pizzas[2]>
<pizza> <cdigo>234</cdigo>
<nombre>Barbacoa</nombre>
</pizza>
<pizza><cdigo>237</cdigo>
<nombre>Barbacoa</nombre>
</pizza>
</pizzas>
Arrays parciales
SOAP
Codificacin
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
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<suma xmlns="http://tempuri.org/">
<a>3</a>
<b>2</b>
</suma>
</soap:Body>
</soap:Envelope>
SOAP
Ejemplo de respuesta
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
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<sumaResponse xmlns="http://tempuri.org/">
<sumaResult>5</sumaResult>
</sumaResponse>
</soap:Body>
</soap:Envelope>
11
WSDL
Evolucin
WSDL (Web Services Description Language)
Describe:
Qu puede hacer el servicio
Dnde reside
Cmo invocarlo
Vocabulario basado en capas
Es posible concentrarse en una capa cada vez
Evolucin: Iniciativa conjunta de Ariba, IBM y Microsoft
(2001) Propuesto a W3C como recomendacin (WSDL 1.1)
(2003) En desarrollo WSDL 2.0
WSDL
Estructura del documento
definitions
types
message
portType
binding
port
service
12
WSDL
Ejemplo
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
Definicin
UDDI(UniversalDiscovery,Description and Integration)
ConsorcioformadoporIBM,Hp,Sun,Microsoft,Oracle,etc.
UDDI1.0(2000)Fundacindelregistro
UDDI2.0(2001)Alineacinconestndaresytaxonomadeservicios
msflexible
UDDI3.0(2002)Interaccindeimplementacionespblicasyprivadas
2partes
Descripcindenegocios
Pginasblancas(informacindecontacto)
amarillas(informacindelaindustria)
verdes(informacintcnicayespecificaciones)
Registrodeservicios
UDDI
Definicin
Provider: Informacin sobre la
entidad que ofrece el servicio
tModel: Descripciones de
especificaciones de servicios
0n
Service: Informacin
descriptiva sobre una familia
particular de ofertas
0n
14
UDDI
Funcionamiento
1.
1.
El
El desarrollador
desarrollador construye
construye un
un
servicio
servicio para
para convertir
convertir
monedas
monedas
servicio Web
conversi
conversin
2.
2.
El
El desarrollador
desarrollador registra
registra yy
clasifica
clasifica el
el servicio
servicio Web
Web
5.
5.
El
El usuario
usuario construye
construye una
una
aplicaci
n que
aplicaci
aplicacin
que consuma
consuma el
el
servicio
Web
directamente
servicio Web directamente
SOAP
Servicios
UDDI
3.
3.
El
El usuario
usuario pregunta
pregunta aa UDDI
UDDI por
por
servicios
n
conversi
servicios de
de conversi
conversin
4.
4.
El
El usuario
usuario determina
determina el
el servicio
servicio
de
n m
s apropiado
conversi
m
de conversi
conversin
ms
apropiado
Pueden
ejecutarse
15
16
Microsoft.NET
ASP.NET paraC#,VBasic,etc.
MSSOAPToolkit
Otros:
SOAP::Lite(Perl),NuSOAP (PHP),Axis (C++)
17
Validar la instalacin:
http://localhost:8080/axis
WSDL
adaptador
stubs
Descripcin
del servicio
WSDL2Java
clases Java
generadas
javac
cliente
cdigo
cliente
18
ServicioSumaLocator.java
ServicioSumaPortType.java
19
ServicioSuma
suma
ServicioSuma
s = new ServicioSumaLocator();
ServicioSumaPortType p = loc.getServicioSumaPort();
p.suma(2,3);
http://live.capescience.com/wsdl/GlobalWeather.wsdl
ClienteTemp.java
public class ClienteTemp {
public static void main(String args[]) throws Exception {
try {
GlobalWeather_ServiceLocator loc = new GlobalWeather_ServiceLocator();
GlobalWeather_Port s = loc.getGlobalWeather();
System.out.println("Temperatura en Aeropuerto de Asturias: " +
s.getWeatherReport("LEAS").getTemperature().getString());
} catch (Exception e) {
System.err.println("Excepcin: " + e);
}
}
}
20
Almacenar en:
<TOMCAT>\webapps\axis\Suma.jws
http://localhost:8080/axis/Suma.jws
21
22
Interoperabilidad
Acceso desde .NET a servicio en Java
1. AccesoaWSDLycreacindeStubs (oproxys)
> wsdl http://localhost:8080/axis/services/ServSuma?wsdl
...
Writing file 'C:\usr\labra\cursos\XMLInnova\WebServ\ClienteNet\ServSumaService.cs'.
EnalgunasversionesesnecesarioeditarServSumaService.cs ymodificar
this.URLparaqueincluyaelpuerto8080
2. Compilacindeproxys
> csc /t: library ServSumaService.cs
using System;
3. Creacindecliente
cliente.cs
4. Compilacindecliente
5. Ejecucin
> cliente
2+3=5
23
Interoperabilidad
Servicios Web en .NET
Interoperabilidad
Servicios Web en .NET
24
Interoperabilidad
Servicios Web en .NET
suma.php
Interoperabilidad
Servicios Web en PHP
<?php
include "nusoap.php";
$namespace = "http://petra.euitio.uniovi.es/~labra/ws/suma.php?wsdl";
$servidor = new soap_server;
$servidor -> configureWSDL ("ServicioSuma", $namespace,
"http://petra.euitio.uniovi.es/~labra/ws/suma.php");
$servidor -> wsdl -> schemaTargetNamespace = $namespace;
$servidor -> register ('suma', array ('a' => 'xsd:float', 'b' => 'xsd:float'),
array ('return' => 'xsd:float'),
'http://petra.euitio.uniovi.es/~labra/ws/suma.php', '', '', '', '' );
$servidor -> service ($HTTP_RAW_POST_DATA);
function suma ($a, $b) {
if (!$a || !$b) {
return new soap_fault ("Client", "", "Se necesitan dos argumentos");
}
if ((gettype ($a) != "integer" && gettype ($a) != "double") ||
(gettype ($b) != "integer" && gettype ($b) != "double")) {
return new soap_fault ("Client", "", "El tipo debe ser entero o real");
}
return $a + $b;
}
?>
25
Algoritmos
IVA
Algoritmos
Envo
Aplicacin
Integrada
Compilacin
Aplicacin
Tiempo de
construccin
Fuente
datos
datos
envo
Tiempo de
configuracin
Tiempo de
ejecucin
Aplicacin
Compilacin
Aplicacin
Integrada
servicio
gastos
envo
Tiempo de
construccin
Tiempo de
ejecucin
26
Servicios Web
Retos
Gestin de servicios Web
WSDM - Web Services Distribution Management
Agregacin de servicios
Ejemplo. Reserva de avin + hotel
Evolucin de los servicios
Cambio de la Interfaz
Modelizacin de procesos de negocios
BPEL - Business Process Execution Language
Contratos, facturacin
Quin gana dinero? Qu pasa cuando algo falla?
Seguridad y fiabilidad
XML Security
Calidad de servicios
Tiempos de respuesta, soporte, monitorizacin, etc.
27
Servicios Web
Mitos...
Ms informacin
www.wsindex.org
InformacindeserviciosWebyWebsemntica
www.searchwebservices.com
PortaldeserviciosWeborientadoaempresas
www.webservices.org
SobreserviciosWeb
www.xmethods.net
ListadeserviciosWeb
www.soapware.org
PortalsobreSOAP
www.w3c.org/2002/ws
EspecificacionesrelacionadasconserviciosWeb
28
Repaso...
Tecnologas XML
DefinicindeXML
DTD
Namespaces
XMLSchema
TransformacindeXML
XSL=XSLT+XPath +XSLFO
VocabulariosXML
XHTML,MathML,SVG,SMIL,WML,VoiceXML
TratamientodeXML
SAX,DOM,JAXP,JAXB
TransportedeXML:ServiciosWeb
SOAP,WSDL,UDDI
29