Servicios Web.
Mario Muñoz Organero
Departamento de Ingeniería Telemáticahttp://www.it.uc3m.es/mario
Servidores de información 2Mario Muñoz Organero.
Panorámica de la asignatura
RED Comunicaciones
Servidores información
Intercambio de datos
Clientes
Servidores de información 3Mario Muñoz Organero.
Panorámica
ServiceSoap/http request
Soap/httpresponse
Port 1
Cliente
Port 2
Http get request
Http response
Servidores de información 4Mario Muñoz Organero.
¿Qué son los servicios Web?
Los servicios Web son un mecanismo de comunicación distribuida que permiten que las aplicaciones compartan información y que además invoquen funciones de otras aplicaciones independientemente de cómo se hayan creado las aplicaciones, cuál sea el sistema operativo o la plataforma en que se ejecutan y cuáles los dispositivos utilizados para obtener acceso a ellas.
Servidores de información 5Mario Muñoz Organero.
¿Qué son los servicios Web?
Los servicios Web son un sistema Software diseñado para soportar la interacción máquina a máquina sobre la red. Definen un formato procesable por ordenador de la descripción de las interfaces (WSDL). La interacción se realiza mediante el intercambio de mensajes a través de la red usando formatos y protocolos como SOAP, HTTP o MIME.
Servidores de información 6Mario Muñoz Organero.
¿Qué son los servicios Web?
Componentes que ejecutan procesos o funciones de negocio significativas.
con una interfaz claramente definida y accesible a través de Internet.
basada en el intercambio de documentos electrónicos en formato XML.
y que pueden ser combinados entre sí.
Servidores de información 7Mario Muñoz Organero.
Enfoque
ServiciosWeb
DCOM, CORBA, RMI
Empresa AEmpresa A
Empresa BEmpresa B
DCOM, CORBA, RMI
Servidores de información 8Mario Muñoz Organero.
Enfoque
Servicio
Servicio
Servicio
Servicio
WEB
XML
XML
XML
XML
XML
XML
Servidores de información 9Mario Muñoz Organero.
Partes de la arquitectura
Descripción de los servicios: WSDL
Registro y búsqueda de servicios: UDDI
Uso de los servicios: SOAP, HTTP, MIME
Comunicaciones: Internet
Formato universal de datos: XML
Bits a transmitir: Interacciones de servicio: SOAP
Descripcion: Descripciones formales: WSDL
Directorio: Publicar & encontrar Servicios: UDDI
Servidores de información 10Mario Muñoz Organero.
Partes de la arquitecturaRegistro UDDI
Enlaces a servicios
Proveedor de servicio Consumidor del servicioMensajes SOAP
Publicación Búsqueda
WSDL - Panorámica
Web Service Description Language
Servidores de información 12Mario Muñoz Organero.
¿Qué es WSDL?
WSDL es una especificación definiendo cómo describir servicios web usando una gramática XML. Describe cuatro piezas principales:
Información sobre la interfaz exportada. Tipos de datos de los mensajes intercambiados (peticiones, respuestas, errores). Información de “binding” definiendo cómo transportar los mensajes en la comunicación. Direcciones para localizar los servicios.
Se puede decir que WSDL representa un contrato entre el proveedor y el usuario de un servicio de la misma manera que unainterfaz Java representa un contrato entre un código cliente y el objeto actual Java.
Servidores de información 13Mario Muñoz Organero.
¿Qué es WSDL?
Es una gramática XML, orientada a describir en forma estructurada, la funcionalidad de un Web Service y la forma en que esa funcionalidad se hace disponible. Describe un servicio, como una colección de “comunication endpoints”(puertos) capaces de intercambiar mensajes.Cada port tiene un definición abstracta (port type) y una definición concreta (binding).Permite describir en forma abstracta operaciones y mensajes, prescindiendo de las especificaciones de protocolo y tipos de datos.Vincula las descripciones abstractas a una implementación concreta de protocolos y tipos de datos, permitiendo la reutilización de las definiciones abstractas.Es extensible tanto en lo que respecta a tipos de datos (XSD) como a protocolos y formatos de mensajes.Provee documentación sobre el servicio que describe
Servidores de información 14Mario Muñoz Organero.
Componentes de un servicio
definitions = elemento raíz del documento WSDL. Se usa para declarar los espacios de nombres.types = se usa para describir tipos de datos para los mensajes intercambiados. message = descripción de los datos que van a ser transmitidos. Son una colección de “data values” de un tipo particular (utilizando XML Schema como mecanismo de tipación).portType = Colección de “operations” o “signatures” de los métodos que definen el intercambio ordenado de los mensajes.bindings = especifica los protocolos usa cada “port” y el “encoding”.port = “Port type” + “Binding”. Es un descripción de una acción soportada por el servicio. Cada operación se corresponde a un mensaje de input o de outputservice = Conjunto de “ports” relacionados que implementan el servicio.
Servidores de información 15Mario Muñoz Organero.
Componentes de un servicio
Servidores de información 16Mario Muñoz Organero.
Componentes de un servicio
Servidores de información 17Mario Muñoz Organero.
Otros componentes
documentationSe usa para añadir comentarios en lenguaje humano a las definiciones.
importImporta otros documentos dentro del actual incorporando otro espacio de nombres.
includeIgual que import pero con el mismo espacio de nombres.
Servidores de información 18Mario Muñoz Organero.
Ejemplo - WSDL
<?xml version="1.0" encoding="UTF-8"?> <definitions name="HelloService“
targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="SayHelloRequest"> <part name="firstName" type="xsd:string"/>
</message> <message name="SayHelloResponse">
<part name="greeting" type="xsd:string"/> </message>
Servidores de información 19Mario Muñoz Organero.
Ejemplo - WSDL
<portType name="Hello_PortType">
<operation name="sayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
Servidores de información 20Mario Muñoz Organero.
Ejemplo - WSDL
<binding name="Hello_Binding" type="tns:Hello_PortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="sayHello">
<soap:operation soapAction="sayHello"/> <input>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/>
</input> <output>
<soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/>
</output> </operation>
</binding>
Servidores de información 21Mario Muñoz Organero.
Ejemplo - WSDL
<service name="Hello_Service"> <documentation>
WSDL File for HelloService</documentation> <port binding="tns:Hello_Binding" name="Hello_Port">
<soap:addresslocation="http://localhost:8080/soap/servlet/rpcrouter"/>
</port> </service>
</definitions>
Servidores de información 22Mario Muñoz Organero.
Mensaje de invocación
Servidores de información 23Mario Muñoz Organero.
Mensaje de respuesta
SOAP
Simple Object Access Protocol
Servidores de información 25Mario Muñoz Organero.
¿Qué es SOAP?
SOAP es una aplicación de la especificación XML.
SOAP = XML messaging.
El transporte de SOAP puede ser HTTP, FTP, TCP, SMTP, POP3, MQSeries,etc
SOAP 1.0 (1999), 1.1 (2000), 1.2 (2002)
Servidores de información 26Mario Muñoz Organero.
Estructura de un mensaje SOAP
El SOAP Header es opcional.
El SOAP Body contiene el mensaje en cuestión a ser procesado.
Servidores de información 27Mario Muñoz Organero.
El “sobre”
SOAP Envelopes: están hechos para llevar documentos XML arbitrarios, sin importar si es un objeto como una factura o una invocación RPC que codifica sus parámetros con “encodingrules” o no. El uso de “encoding styles” es totalmente opcional.Codificación de datos que no sean string de texto como estructurados, arrays y otros tipos compuestos se hace en base64
Servidores de información 28Mario Muñoz Organero.
El SOAP Header
No tiene por qué ir asociado a la aplicación.Usos típicos son: identificadores, información de seguridad como certificados…SOAP proporciona un mecanismo para especificar quién debe tratar las cabeceras y qué hacer con ellas. Para ello incluye:
Atributo SOAP actor: quién debe procesar una cabecera: none, next, ultimateReceiver. Atributo mustUnderstand: con valores 1 o 0, indicando si el procesamiento de la cabecera es o no obligatorio. SOAP 1.2 añade un atributo relay (reenviar la cabecera si no se procesa)
Servidores de información 29Mario Muñoz Organero.
El SOAP Body
Para información específica de la aplicación.
Las entradas en el body son extremo a extremo y deben ser entendidas por el receptor.
El cuerpo del mensaje puede contener contenido de invocación, respuesta, notificación o error (fault)
Servidores de información 30Mario Muñoz Organero.
Usos de SOAP
RPC: envío de parámetros y recepción de resultados.
EDI: envío de y recepción de facturas, ejemplo: info financiera
Servidores de información 31Mario Muñoz Organero.
RPC – ejemplo petición
En general viene de a pares (solicitud y respuesta), pero no siempre tiene que haber una respuesta.
<s: Envelope xmlns:s=http://www.w3.org/2001/06/soap-envelope><s:Header>
<m:transaction xmlns:m=“soap-transaction”s:mustUnderstand=“true”/>
</s:Header><s:Body>
<n:getQuote xmlns:n=urn:QuoteService”><symbol xsi:type=“xsd:string”>
IBM</symbol>
</n:getQuote></s:Body>
</s:Envelope>
Servidores de información 32Mario Muñoz Organero.
RPC – ejemplo respuesta
<s:Envelope xmlns:s=http://www.w3.org/2001/06/soap-envelope><s:Body>
<n:getQuoteResponse xmlns:n=“urn:QuoteService”><value xsi:type=“xsd:float”>
98.06</value>
</n:getQuoteResponse></s:Body>
</s:Envelope>
Servidores de información 33Mario Muñoz Organero.
Estilos de codificación
Es un conjunto de reglas que definen exactamente como los data types de aplicaciones y de la plataforma serán codificados en una sintaxis XML común .SOAP define más un método de codificación para convertir los datos de un objeto software a formato XML y viceversa.Para especificar el tipo de codificación se utiliza el atributo encodingStyle en el elemento getQuote del ejemplo:
<s:Envelope xmlns:s=http://www.w3.org/2001/06/soap-envelope><s:Body>
<n:getQuote xmlns:n:”urn:QuoteService”s:encodingStyle=http://www.w3.org/2001/06/soap-encoding>
<symbol xsi:type=“xsd:string”>IBM</symbol></n:getQuote>
</s:Body></s:Envelope>
Servidores de información 34Mario Muñoz Organero.
Estilos de codificación
3 de los “encoding styles” de SOAP se hanpopularizado:
SOAP Remote Procedure Call (RPC) encoding,
SOAP Remote Procedure Call Literal encoding (SOAP RPC-literal),
SOAP document-style encoding
Servidores de información 35Mario Muñoz Organero.
Invocaciones estilo RPC
La invocación es representada en una sola estructura con sus parámetros in o in-out.
Los nombres y el orden físico de los parámetros debe coincidir con el de los parámetros del método que invocó.
Servidores de información 36Mario Muñoz Organero.
Ejemplo - invocación
String checkStatus(String orderCode, String customerID);
<s:Envelope xmlns:s=“….”><s:Body>
<checkStatus xmlns=“….”s:encodingStyle=http://www.w3.org/2001/06/soap-encoding>”<orderCode xsi:type=“string”>abc123</orderCode><customerID xsi:type=“string”>Bob’s store</customerID>
</checkStatus></s:Body>
</s:Envelope>
Servidores de información 37Mario Muñoz Organero.
Ejemplo - Respuesta
<s:Envelope xmlns:s=“…”>
<s:Body>
<checkStatusResponse s:encodingStyle=“http:// ….”>
<return xsi:type=“xsd:string”>new</return>
</checkStatusResponse>
</SOAP:Body>
</SOAP:Envelope>
Servidores de información 38Mario Muñoz Organero.
Tipos de datos
SOAP define 3 formas distintas de expresar los tipos de datos de un tag:Utilizar el atributo xsi:type en cada tag, explicitamente referenciando el tipo de datos de acuerdo con la especificación del XML Schema.
<person><name xsi:type=“xsd:string”>John Doe</name>
</person>
Referenciar un XML Schema que define particularmente ese tipo de datos exacto.
<person xmlns=“personschema.xsd”><name>John Doe</name>
</person> <!-- en personschema.xsd se define el elemento como type=xsd:string -->
Referenciar otro tipo de documento schema que defina el tipo de datos de un tipo de elemento dentro del cual se declara.
<person xmlns=“urn:some_namespace”><name>John Doe</name>
</person><!-- urn:namespace indica en el cual los valores de los elementos son strings -->
Servidores de información 39Mario Muñoz Organero.
SOAP Faults
Siempre en el Body
Fault codes extensiblesNo correspondencias de versiones
Problemas reconociendo headers o data encodings
Problemas genéricos en emisor o receptor
Causas de fallo en texto legible
Servidores de información 40Mario Muñoz Organero.
SOAP Faults
Emplazarlos en el cuerpo del mensaje SOAP (env:Body elements)Dentro del Body en elemento env:FaultSubelementos:
env:Node identifica al nodo que genera el falloLa ausencia implica “ultimo receptor”
env:Codeenv:Valueenv:Subcode
env:Reasonenv:Text
env:DetailEspecífico de la aplicación
Servidores de información 41Mario Muñoz Organero.
Ejemplo - SOAP Faults
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"xmlns:xml="http://www.w3.org/XML/1998/namespace">
<env:Body xmlns:m="http://www.example.org/timeouts"><env:Fault><env:Code><env:Value>env:Sender</env:Value><env:Subcode><env:Value>m:MessageTimeout</env:Value>
</env:Subcode></env:Code><env:Reason><env:Text xml:lang="en">Sender Timeout</env:Text>
</env:Reason><env:Detail><m:MaxTime>P5M</m:MaxTime></env:Detail>
</env:Fault></env:Body>
</env:Envelope>
WSDL - Detalles
Versión 1.1
Servidores de información 43Mario Muñoz Organero.
Espacios de nombres
Prefijo URI del espacio de nombres definiciónwsdl http://schemas.xmlsoap.org/wsdl/ WSDL namespace for WSDL
framework.soap http://schemas.xmlsoap.org/wsdl/soap/ WSDL namespace for WSDL SOAP
binding.http http://schemas.xmlsoap.org/wsdl/http/ WSDL namespace for WSDL HTTP
GET & POST binding.Mime http://schemas.xmlsoap.org/wsdl/mime/ WSDL namespace for WSDL MIME
binding.soapenc http://schemas.xmlsoap.org/soap/encoding/ Encoding namespace as defined by
SOAP 1.1 Soapenv http://schemas.xmlsoap.org/soap/envelope/ Envelope namespace as defined by
SOAP 1.1 Xsi http://www.w3.org/2000/10/XMLSchema-instance Instance namespace as defined by
XSD Xsd http://www.w3.org/2000/10/XMLSchema Schema namespace as defined by
XSDTns (various) El “this namespase” (tns) se usa como
convención para referirse al documento corriente.
Servidores de información 44Mario Muñoz Organero.
Servidores de información 45Mario Muñoz Organero.
Servidores de información 46Mario Muñoz Organero.
definitions
Atributos:Un nombre local para las definicionesEl nombre para el espacio de nombres "http://www.w3.org/2004/08/wsdl".Los siguientes atributos:
targetNamespace – requerido Otros espacios de nombres distintos a "http://www.w3.org/2004/08/wsdl".
Elementos hijos:importtypesmessageportTypebindingportservice
Servidores de información 47Mario Muñoz Organero.
import
Servidores de información 48Mario Muñoz Organero.
types
Definiciones de tipos de datos que son relevantes para el intercambio de mensajes.
Se usa XSD (interoperabilidad).
Servidores de información 49Mario Muñoz Organero.
messages
Cada mensaje tiene partes.
Cada parte tiene nombre y tipo.
Servidores de información 50Mario Muñoz Organero.
Ejemplo
…
Servidores de información 51Mario Muñoz Organero.
portType
Conjunto de operaciones.
Cada tipo de puerto tiene su nombre.
Servidores de información 52Mario Muñoz Organero.
operations
Cada una de las funciones que se pueden invocar en un puerto.
Cuatro tipos:One-way. Se recibe un mensaje.
Request-response. Se recibe un mensaje y se contesta.
Solicit-response. Se manda un mensaje y se espera la respuesta.
Notification. Se envía un mensaje para el que no se esperarespuesta.
Servidores de información 53Mario Muñoz Organero.
operations
Servidores de información 54Mario Muñoz Organero.
operations
Servidores de información 55Mario Muñoz Organero.
bindings
Servidores de información 56Mario Muñoz Organero.
bindings
Se les pone un nombre.El tipo hace referencia al portType.Los campos de extensibilidad recogenelementos que especifican la gramáticaconcreta para los mensajes de entrada, salida y error (3), (4) y (5).Se puede especificar opcionalmente informaciónde binding para toda una operación (2) así comopara todo el elemento de binding (1).
Servidores de información 57Mario Muñoz Organero.
Ejemplo – SOAP sobre HTTP
Servidores de información 58Mario Muñoz Organero.
Ejemplo – SOAP sobre SMTP (preparativos…)
Servidores de información 59Mario Muñoz Organero.
Ejemplo – SOAP sobre SMTP
Servidores de información 60Mario Muñoz Organero.
Servidores de información 61Mario Muñoz Organero.
Otros binding
A parte de SOAP tenemos:MIME
HTTP GET/POST
Servidores de información 62Mario Muñoz Organero.
ports
Se definen dentro de los servicios
Tienen nombres y se asocian a un binding
Indican la dirección dónde se invocan
Servidores de información 63Mario Muñoz Organero.
services
Tienen nombre
Agrupan un serie de puertos
WSDL 2.0
Servidores de información 65Mario Muñoz Organero.
Definitions
Atributos:Un nombre local para las definicionesEl nombre para el espacio de nombres "http://www.w3.org/2004/08/wsdl".Los siguientes atributos:
targetNamespace – requerido Atributo wsdlLocationOtros espacios de nombres distintos a "http://www.w3.org/2004/08/wsdl".
Elementos hijos:documentation - opcionalCero o más de entre los siguientes:
Importinclude
Types - opcionalCero o más de entre los siguientes:
Elementos de tipo interfaceElementos de tipo bindingElementos de tipo service
Application/wsdl+xml media type
Servidores de información 66Mario Muñoz Organero.
interface
Es el sustituto de los portsAhora un servicio tendrá una sola interfazCada interfaz podrá tener varias operacionesSe permite la herencia mediante la extensión de otros interfacesSe definen tanto Operations como Faults
Servidores de información 67Mario Muñoz Organero.
interface
OperationsEs obligatorio indicar el MEP (Message Exchange Patterns)
Input/output messages, faults
Se pueden referenciar a elementos XML
FaultsUsados por las operations
Se pueden referenciar a elementos XML
Servidores de información 68Mario Muñoz Organero.
Interface: herencia
Servidores de información 69Mario Muñoz Organero.
MEPs
Message Exchange PatternsModelan los intercambios típicos de mensajes entre nodosDesde el punto de vista del servidorEspecifican secuenciamiento, dirección y cardinalidad
Nuevo en WSDL 2.0:Extensible (en WSDL 1.1 era fijo)Cualquier número de nodos (2 en WSDL 1.1)(El número de MEPs no finalizado aún)
Ejemplo:<operation
name="getQuantityInStock"mep="http://www.w3.org/2003/wsdl/pattern/in-out">
<input messageRef="getQuantityInStockRequest"/><output messageRef="getQuantityInStockResponse"/>
</operation>
Servidores de información 70Mario Muñoz Organero.
MEPs
Servidores de información 71Mario Muñoz Organero.
fault
Servidores de información 72Mario Muñoz Organero.
operation
Servidores de información 73Mario Muñoz Organero.
operation
Servidores de información 74Mario Muñoz Organero.
operation
Servidores de información 75Mario Muñoz Organero.
Ejemplo
<interface name=“BankAccount”><operation name=“deposit”
pattern=“http://www.w3.org/2004/08/wsdl/in-out”><input element=“Deposit”/><output element=“Balance”/><outfault ref=“InvalidBankAccount”/>
</operation><operation name=“balance” safe=“true”
pattern=“http://www.w3.org/2004/08/wsdl/in-out”><input element=“BalanceRequest”/><output element=“Balance”/><outfault ref=“InvalidBankAccount”/>
</operation><fault name=“InvalidBankAccount”
element=“InvalidAccountInfo” /></interface>
Servidores de información 76Mario Muñoz Organero.
features y properties
Servidores de información 77Mario Muñoz Organero.
features
Feature componentRepresentación WSDL de las features de SOAP 1.2Pero más generales: no se limita a SOAP 1.2Describen carácterísticas aceptadas o usadas por operaciones. Se nombran por una URI
Nuevas en WSDL 2.0Ejemplo
<featureuri="http://example.com/correlation"required="true"/>
Servidores de información 78Mario Muñoz Organero.
properties
Property:Especifica valores soportados por una propiedad de una featureSe pueden compartir entre diferentes features
Nuevas en WSDL 2.0Ejemplo 1
<property uri="http://example.com/trafficLight/colour"><value>green</value>
</property>Ejemplo 2
<xs:simpleType name="RedAndGreen"><xs:restriction base="xs:string">
<xs:enumeration value="red"/><xs:enumeration value="green"/>
</xs:restriction></xs:simpleType>…<property uri="http://example.com/trafficLight/colour">
<constraint>RedAndGreen</constraint></property>
Servidores de información 79Mario Muñoz Organero.
binding
Detalles para el intercambio de mensajes por la redTipo explícitoEspecifica los parámetros del protocolo
Servidores de información 80Mario Muñoz Organero.
Binding - fault
Servidores de información 81Mario Muñoz Organero.
Binding - operation
Servidores de información 82Mario Muñoz Organero.
Binding – operation – input/output
Servidores de información 83Mario Muñoz Organero.
Ejemplo
<binding name=“SecureBank" interface=“BankAccount"type="http://www.w3.org/2004/08/wsdl/soap12"wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/“>
<operation ref=“balance" wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response/">
</operation>
<fault ref=“InvalidBankAccount"wsoap:code=“soap:Sender">
</fault>
<feature uri="http://example.com/secure-channel"required="true"/>
</binding>
Servidores de información 84Mario Muñoz Organero.
service
Servidores de información 85Mario Muñoz Organero.
Service - endpoint
Servidores de información 86Mario Muñoz Organero.
Ejemplo
<service name=“HypoTirol”
interface=“BankAccount”>
<endpoint name=“secure”
binding=“SecureAccount”
address=“https://ht.at/account” />
</service>
Servidores de información 87Mario Muñoz Organero.
Trabajos actuales
WS-Addressing
WS-Policy
Servidores de información 88Mario Muñoz Organero.
WS-Addressing -Ejemplo
To – DestinatarioFrom, ReplyTo, FaultTo – canal de retornoMessageID, RelatesTo – correlación simpleAction – La semantica que asume el mensaje
<S:Envelope><S:Header>
<wsa:MessageID>uuid:aaaabbbb-cccc-dddd-eeee-ffffffffffff</wsa:MessageID><wsa:ReplyTo><wsa:Address>http://example.com/client1</wsa:Address></wsa:ReplyTo><wsa:To>mailto:[email protected]</wsa:To><wsa:Action>http://example.com/mail/Delete</wsa:Action>
</S:Header><S:Body><ex:Delete><maxCount>42</maxCount></ex:Delete>
</S:Body></S:Envelope>
UDDI
Universal Description, Discovery and Integration
Servidores de información 90Mario Muñoz Organero.
Arquitectura
UDDI
SERVICIO
CLIENTE
WSDLWSDL
SOAP/HTTP...
3. CONSUMO DEL SERVICIO
Servidores de información 91Mario Muñoz Organero.
UDDI
Implementa la funcionalidad de “discovery”necesaria para poder encontrar la descripción WSDL del WebService que se necesita.
UDDI tiene 2 partes:Un directorio con los metadatos de todos los WebServices, incluyendo un puntero a la descripción WSDL de cada uno.
Las definiciones de “port types” WSDL para manipular y buscar en ese directorio.
Servidores de información 92Mario Muñoz Organero.
UDDI
Define estándares para un registro distribuido de servicios Web:
White pages (información general)
Yellow pages (categorías de servicios)
Green pages (reglas de negocio)
Servidores de información 93Mario Muñoz Organero.
Páginas blancas
Información sobre un proveedor de servicios: Nombre
Descripción en texto del proveedor
Información de contactoTeléfono
Dirección postal
Otros nombres (ticket para el IBEX-35…).
Servidores de información 94Mario Muñoz Organero.
Páginas amarillas
Categorías de negocios.
En UDDI V1 se definen 3 taxonomías:NAICS (North American industry codes)
UN/SPSC (ECMA product/services codes)
Geographical information
Estas se extienden en UDDI V2.
Servidores de información 95Mario Muñoz Organero.
Páginas verdes
Se describe la “chicha” de cómo interactuar con alguien:
Entidades de negocioDescripciones de serviciosInformación de binding
Este directorio o registro es definido como una jerarquía de entidades “business”, “service” y “binding” cuyas descripciones son expresadas en XML.
Servidores de información 96Mario Muñoz Organero.
Business Entity
Provee información de quien desarrolló el WebService: la compañía, información de contacto en la misma, categorías de la industria, identificador de negocios y la lista de los servicios provistos
A continuación presentamos un ejemplo ...
Servidores de información 97Mario Muñoz Organero.
<businessEntity businessKey="uuid:11111111-2222-3333-4444-555555555555"operator="http://www.ibm.com"authorizedName="John Doe">
<name>Acme Company</name><description>
We create cool WebServices</description><contacts>
<contact useType="general info"><description>General Information</description><personName>John Doe</personName><phone>(123) 123-1234</phone><email>[email protected]</email>
</contact></contacts><businessServices>
...</businessServices><identifierBag>
<keyedReference ModelKey="UUID:11111111-2222-3333-4444-555555555556"name="D-U-N-S"value="123456789" />
</identifierBag><categoryBag>
<keyedReference ModelKey="UUID:11111111-2222-3333-4444-555555555557"name="NAICS"value="111336" />
</categoryBag><businessEntity>
Servidores de información 98Mario Muñoz Organero.
Business Services
Representa un único WebService provisto por la “Business Entity”.
La descripción incluye: tipo de WebService y a que categorías pertenece.
La forma de identificar todas las “businessentities” y los “business services” en UDDI es a través del UUID (“universally unique identifiers”).
Servidores de información 99Mario Muñoz Organero.
<businessService serviceKey=“uuid:11111111-2222-4444-5555-666666666666”businessKey=“uuid:11111111-2222-4444-5555-666666666667”>
<name>Hello World WebServices</name><description>A friendly WebService</description><bindingTemplates>
….</bindingTemplates><categoryBag />
</businessService>
Ejemplo de Business Service
Servidores de información 100Mario Muñoz Organero.
Binding Templates
Son la descripción técnica de los WebServicesrepresentados por la estructura “business service”.Representan la implementación del WebService.Basicamente equivalen a el elemento “service” descriptoen WSDL.Como un mismo servicio puede estar implementado de diferentes formas y puede ser asociado a múltiples protocolos o diferentes direcciones, puede haber varios binding templates para un mismo WebServiceVeamos un ejemplo a continuación …
Servidores de información 101Mario Muñoz Organero.
<bindingTemplate serviceKey=“uuid:11111111-2222-4444-5555-666666666666”
businessKey=“uuid:11111111-2222-4444-5555-666666666667”>
<description>Hello World SOAP Binding</description>
<accessPoint URLType="http">
http://localhost:8080
<accessPoint>
<TModelInstanceDetails>
<TModelInstanceInfo TModelKey=“uuid:11111111-2222-4444-5555-666666666668”>
<instanceDetails>
<overviewDoc>
<description>
references the description of the WSDL service definition
</description>
<overviewURL>
http://localhost/helloworld.wsdl
</overviewURL>
</overviewDoc>
</instanceDetails>
</TModelInstanceInfo>
</TModelInstanceDetails>
</bindingTemplate>
Servidores de información 102Mario Muñoz Organero.
TModels
Es una forma de describir varias estructuras “business + service + template” dentro del directorio UDDI.Sirven para representar los nuevos “port types”dentro de WSDL. Luego se puede especificar que un determinado business serviceimplementa ese “port type”, asociando el TModel con uno de los “binding templates” del “business service”.
Servidores de información 103Mario Muñoz Organero.
Ejemplo de TModel
<TModel TModelKey=“uuid:xyz987…”operator=“http://www.ibm.com”authorizeName=“John Doe”>
<name>HelloWorldInterface Port Type</name><description>An interface for a friendly WebService
</description><overviewDoc>
<overviewURL>http://localhost/helloworld.wsdl
</overviewURL></overviewDoc>
</TModel>
Servidores de información 104Mario Muñoz Organero.
Interfaces UDDI
Ofrece 2 interfaces: una para los proveedores de servicios y otra para quien consume los servicios.Los proveedores utilizan PublishSOAP para publicar los servicios, y los consumidores utilizan InquireSOAP para consultar por un servicio. Estos mismos servicios son descriptos en WSDL también.El tipos de datos manejados por las interfaces UDDI (por ej. businessDetails) está en las “UDDI XML Schemadefinitions”. Para importar las definiciones WSDL:
<import namespace=“urn:uddi-org:apilocation=“http://www.uddi.org/schema/2001/uddi_v1.xsd” />
Servidores de información 105Mario Muñoz Organero.
Interfaz Publisher
get_authTokendiscard_authTokensave_businesssave_servicesave_bindingsave_Tmodeldelete_businessdelete_servicedelete_bindingdelete_Tmodelget_registeredInfo
Servidores de información 106Mario Muñoz Organero.
Interfaz Inquiry
find_bindingfind_businessfind_ltservice (por ej. lista WebServices quecorreponden a un criterio dado)find_TModelget_bindingDetailget_businessDetailget_businessDetailExtget_serviceDetailget_TModelDetail