La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

WSDL & UDDI Taller de Sistemas de Información 1

Presentaciones similares


Presentación del tema: "WSDL & UDDI Taller de Sistemas de Información 1"— Transcripción de la presentación:

1 WSDL & UDDI Taller de Sistemas de Información 1
InCo – Facultad de Ingeniería Abril 2004

2 Resumen de pasos para poner a funcionar un WebService
El proveedor crea, compone y distribuye el web service utilizando el lenguaje de programación, el middleware y la plataforma que él mismo elija. El proveedor describe el web service en un documento WSDL (“web services description language”). El proveedor registra el servicio en el catálogo UDDI (Universal Description, Discovery and Integration). UDDI permite registrar y hacer búsquedas en su catalogo. Un usuario necesitado, busca información de los servicios que necesita en el catálogo. La aplicación del usuario engancha con el webservice y lo invoca utilizando SOAP. Taller de Sistemas de Información 1

3 WebServices Description Language (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 el reuso 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 Taller de Sistemas de Información 1

4 Componentes de una Descripción de Servicio (1)
Service = Conjunto de “ports” relacionados que implementan el servicio. Port = “Port type” + “Binding” Es un descripción abstracta de una acción soportada por el servicio. Cada operación se corresponde a un mensaje de input o de output Port type = 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”. 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). Taller de Sistemas de Información 1

5 Componentes de una Descripción de Servicio (2)
Taller de Sistemas de Información 1

6 Descripción de un Servicio
Data types <wsdl:type/> Messages <wsdl:message/> Interfaces <wsdl:portType/> Services <wsdl:binding/> <wsdl:service/> Taller de Sistemas de Información 1

7 Prefijos para referenciar namespaces
prefix namespace URI definition wsdl WSDL namespace for WSDL framework. soap WSDL namespace for WSDL SOAP binding. http WSDL namespace for WSDL HTTP GET & POST binding. Mime WSDL namespace for WSDL MIME binding. soapenc Encoding namespace as defined by SOAP 1.1 Soapenv Envelope namespace as defined by SOAP 1.1 Xsi Instance namespace as defined by XSD Xsd Schema namespace as defined by XSD Tns (various) El “this namespase” (tns) se usa como convención para referirse al documento corriente. Taller de Sistemas de Información 1

8 Taller de Sistemas de Información 1
Port 1 Soap/http request Service Cliente Soap/httpresponse Http get request Http response Port 2 Taller de Sistemas de Información 1

9 Definición de tipos y namespaces en un doc. WSDL
Uso de “import” para importar una referencia de un tipo de definición: <?xml version=“1.0” encoding=“UTF-8”?> <wsdl:definitions name=“HelloWorldDescription” targetNamespace=“urn:HelloWorld” xmlns:tns=“urn:HelloWorld” xmlns:types=“urn:MyDataTypes” xmlns:soap=“ xmlns:wsdl=“ <wsdl:import namespace=“urn:MyDataTypes” location=“telephonenumber.xsd”/> </wsdl:definitions> Taller de Sistemas de Información 1

10 Describiendo la interfase del WebService
<definitions …> <wsdl:message name=“sayHello_IN”> <part name=“name” type=“xsd:string” /> </wsdl:message> <wsdl:message name=“SayHello_Out”> <part name=“greeting” type=“xsd:string” /> </wsdl:message <wsdl:portType name=“HelloWorldInterface”> <wsdl:operation name=“SayHello”> <wsdl input message=“tns:sayHello_IN” /> <wsdl:output message=“tns:sayHello_Out” /> </wsdl:operation> </wsdl:portType> </definitions> Hay 4 tipos de operaciones posibles: input, output, input output, output input Taller de Sistemas de Información 1

11 Haciendo el “binding” con la interfase del WebService
<wsdl:binding name=“HelloWorldBinding” type=“tns:HelloWorldInterface”> <!-- define el protocolo de transporte y el estilo del mensaje SOAP--> <soap:binding style=“rpc” puede ser “rpc” o “document” transport=“ <!-- define el valor del header soapAction cuando HTTP es usado--> <wsdl:operation name=“sayHello”> <soap:operation soapAction=“urn:Hello” /> <!-- especifica si las partes del mensaje serán condif o literales--> <wsdl:input> <soap:body use=“encoded” namespace=“…” encodingStyle=“…” /> </wsdl:input> <wsdl:output> </wsdl:output> </wsdl:operation> </wsdl:binding> Taller de Sistemas de Información 1

12 Binding de WSDL con HTTP-GET
<wsdl:binding name=“HelloWorldBinding” type=“HelloWorldInterface”> < verb=“GET”/> <wsdl:operation name=“sayHello”> < location=“sayHello” /> <wsdl:input> < /> </wsdl:input> <wsdl:ouput> <mime:content type=“text/plain” /> <wsdl:output> <wsdl:operation> </wsdl:binding> La invocación podría ser La respuesta es un string de datos en formato MIME. Taller de Sistemas de Información 1

13 Taller de Sistemas de Información 1
Herramientas Existen varias herramientas disponibles para generar automáticamente el documento WSDL correspondiente a un WebServices: VisualStudio.Net IBM Web Services Toolkit Apache Web Services Toolkit Microsoft Soap Toolkit V2 Rc 0. Taller de Sistemas de Información 1

14 Taller de Sistemas de Información 1
Observaciones WSDL es sin duda el estándar para describir servicios de web. Existen otros lenguajes que apuntan a resolver el mismo problema en ambientes más especializados. Uno de ellos es ebXML (orientado a transacciones comerciales) Desventajas: WSDL no proveen versionado. WSDL carece de la posibilidad de especificar una secuencia de las operaciones necesarias en un intercambio de mensajes (por ejemplo, un login previo). Taller de Sistemas de Información 1

15 Seguridad, derechos de uso
No existen atributos para identificar al usuario Ni especificaciones que permitan portar claves en forma segura. (SOAP) No existen normas de autenticación, aparentemente queda librado a la aplicación que da el servicio Taller de Sistemas de Información 1

16 Taller de Sistemas de Información 1
Seguridad de los datos No existe una especificación para encriptar y autenticar los mensajes. (SOAP). Existe una especificación de W3C, sobre encriptación en XML, pero no está adoptada. Al utilizar Soap, pasa a través de los Firewalls Taller de Sistemas de Información 1

17 Universal Description, Discovery and Integration (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 la metadata 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. El directorio o registro es definido como una jerarquía de entidades “business”, “service” y “binding” cuyas descripciones son expresadas en XML. Taller de Sistemas de Información 1

18 Taller de Sistemas de Información 1
Business Entity Provee información de quien desarrollo 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 ... Taller de Sistemas de Información 1

19 Taller de Sistemas de Información 1
<businessEntity businessKey="uuid: " operator=" 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) </phone> </contact> </contacts> <businessServices> ... </businessServices> <identifierBag> <keyedReference ModelKey="UUID: " name="D-U-N-S" value=" " /> </identifierBag> <categoryBag> <keyedReference ModelKey="UUID: " name="NAICS" value="111336" /> </categoryBag> <businessEntity> Taller de Sistemas de Información 1

20 Taller de Sistemas de Información 1
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 “business entities” y los “business services” en UDDI es a través del UUID (“universally unique identifiers”). Taller de Sistemas de Información 1

21 Ejemplo de Business Service
<businessService serviceKey=“uuid: ” businessKey=“uuid: ”> <name>Hello World WebServices</name> <description>A friendly WebService</description> <bindingTemplates> …. </bindingTemplates> <categoryBag /> </businessService> Taller de Sistemas de Información 1

22 Taller de Sistemas de Información 1
Binding Templates Son la descripción técnica de los WebServices representados por la estructura “business service”. Representan la implementación del WebService. Basicamente equivalen a el elemento “service” descripto en 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 WebService Veamos un ejemplo a continuación … Taller de Sistemas de Información 1

23 Taller de Sistemas de Información 1
<bindingTemplate serviceKey=“uuid: ” businessKey=“uuid: ”> <description>Hello World SOAP Binding</description> <accessPoint URLType="http"> <accessPoint> <TModelInstanceDetails> <TModelInstanceInfo TModelKey=“uuid: ”> <instanceDetails> <overviewDoc> <description> references the description of the WSDL service definition </description> <overviewURL> </overviewURL> </overviewDoc> </instanceDetails> </TModelInstanceInfo> </TModelInstanceDetails> </bindingTemplate> Taller de Sistemas de Información 1

24 Taller de Sistemas de Información 1
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 service implementa ese “port type”, asociando el TModel con uno de los “binding templates” del “business service”. Taller de Sistemas de Información 1

25 Taller de Sistemas de Información 1
Ejemplo de TModel <TModel TModelKey=“uuid:xyz987…” operator=“ authorizeName=“John Doe”> <name>HelloWorldInterface Port Type</name> <description> An interface for a friendly WebService </description> <overviewDoc> <overviewURL> </overviewURL> </overviewDoc> </TModel> Taller de Sistemas de Información 1

26 Federación de servicios UDDI
Originalmente UDDI fue pensado como un conjunto de directorios interconectados, a través de Internet, que implementan la misma interface basada en SOAP para publicar y ubicar WebServices. No obstante una compañía o una industria puede implementar su propio directorio de servicios UDDI. Productos como Microsoft UDDI Services para W2K Server son ejemplos de herramientas que permiten implementar estas soluciones para una intranet. Taller de Sistemas de Información 1

27 Taller de Sistemas de Información 1
Interface 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 Schema definitions”. Para importar las definiciones WSDL: <import namespace=“urn:uddi-org:api” location=“ /> Taller de Sistemas de Información 1

28 Taller de Sistemas de Información 1
Publisher Interface get_authToken discard_authToken save_business save_service save_binding save_Tmodel delete_business delete_service delete_binding delete_Tmodel get_registeredInfo Taller de Sistemas de Información 1

29 Taller de Sistemas de Información 1
Inquiry Interface find_binding find_business find_ltservice (por ej. lista WebServices que correponden a un criterio dado) find_TModel get_bindingDetail get_businessDetail get_businessDetailExt get_serviceDetail get_TModelDetail Taller de Sistemas de Información 1

30 Como registrar un WebService
Primero es necesario autenticarse con el directorio UDDI. Se transmite un envelope SOAP, con los datos del nuevo servicio. La registración puede ser desde un lenguaje, como Java, a algún UDDI particular al mismo o vía un envelope SOAP a cualquier servidor UDDI que no este atado a un lenguaje particular. Ver ejemplo a continuación ... Taller de Sistemas de Información 1

31 Taller de Sistemas de Información 1
<SOAP-ENV:Envelope xmlns:SOAP-ENV=" xmlns:xsi=" xml:xsd=" <SOAP-ENV:Body> <save_business generic="1.0" xmlns="urn:uddi-org:api"> <authInfo>Test</authInfo> <businessEntity> <name>IBM</name> <businessServices> <businessService> <name>Hello World Service</name> <bindingTemplates> <bindingTemplate> <accessPoint urlType="HTTP"> </bindingTemplate> </bindingTemplates> </businessService> </businessServices> <identifierBag> <keyedReference keyName="D-U-N-S" keyValue=" " TModelKey="uuid:C089FE..." /> </identifierBag> <categoryBag> <keyedReference keyName="NAICS" keyValue="11194" </categoryBag> </businessEntity> </save_business> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Taller de Sistemas de Información 1

32 Taller de Sistemas de Información 1
DISCO It is difficult to query UDDI to determine what WebServices are exposed by a particular server. DISCO allows you to discover the WebServices running on a particular computer by providing a browse paradigm for locating a particular Web service. You can advertise a top-level index that contains references to specific WebServices or to other DISCO files. Because DISCO does not require you to formally register with UDDI, you can quickly expose your WebServices to other developers. Developers can browse your development server to discover the URL of a particular Web service that they need to code against. When Visual Studio .NET creates a WebServices project, it creates a DISCO file. This file is given the same name as the project and a .vsdisco extension. Taller de Sistemas de Información 1


Descargar ppt "WSDL & UDDI Taller de Sistemas de Información 1"

Presentaciones similares


Anuncios Google