Issuu on Google+

WSDL (Web Services Description Language) Es un formato XML que se utiliza para describir servicios Web (algunas personas lo leen como wisdel). La versión 1.0 fue la primera recomendación por parte del W3C y la versión 1.1 no alcanzó nunca tal estatus. La versión 2.0 se convirtió en la recomendación actual por parte de dicha entidad. WSDL describe la interfaz pública a los servicios Web. Está basado en XML y describe la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes necesarios para interactuar con los servicios listados en su catálogo


El WDSL nos permite tener una descripción de un servicio web. Especifica la interfaz abstracta a través de la cual un cliente puede acceder al servicio y los detalles de cómo se debe utilizar. Un documento WSDL no es más que un documento XML que describe ciertas características propias de un servicio web, así como su localización y aquellos parámetros y métodos que soporta.

Así, WSDL se usa a menudo en combinación con SOAP y XML Schema. Un programa cliente que se conecta a un servicio web puede leer el WSDL para determinar qué funciones están disponibles en el servidor.


Estructura del WSDL

En este ejemplo se implementa un servicio que muestra a partir del nombre de un valor burs谩til su valor actual en el mercado.

La estructura del WSDL tiene los siguientes elementos:

Tipos de Datos <types> : Esta secci贸n define los tipos de datos usados en los mensajes. Se utilizan los tipos definidos en la especificaci贸n de esquemas XML. <types> <schema targetNamespace="http://example.com/stockquote.xsd"> quote---cotizar <element name="TradePriceRequest"> --Petici贸n de precio <complexType> <all> <element name="tickerSymbol" type="string"/> --simbolo del producto,recurso </all> </complexType> </element> <element name="TradePrice"> --valor bursatil <complexType> <all> <element name="price" type="float"/> ---precio </all> </complexType> </element> </schema> </types>


Mensajes

El elemento message define los datos que participan en una operación. Cada mensaje puede tener una o varias partes, y cada parte puede considerarse como si fuera los parámetros que se pasan en la llamada a una función en programación clásica o un método en programación orientada a objetos.

<message name="GetLastTradePriceInput"> --Método que recibe los parámetros definidos anteriormente. <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message>


Tipos de Puerto

<portType> es el elemento XML de WSDL que define el servicio web, así como las operaciones posibles mediante dicho servicio y los mensajes vinculados. <portType> cumple una función análoga a la de una función de biblioteca en programación clásica o a la de una clase en programación orientada a objetos. <portType name="StockQuotePortType"> ---Librería con los precios <operation name="GetLastTradePrice"> < input message="tns:GetLastTradePriceInput"/> <outputmessage="tns:GetLastTradePriceOutput"/> </operation> </portType>


Bindings <binding> define el formato del mensaje y el protocolo para cada uno de los puertos.

<binding name="StockQuoteSoapBindingÂŤ type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding>


Servicios <service> : Conjunto de puertos y direcci贸n de los mismos. Esta parte final hace referencia a lo aportado por las secciones anteriores.

<service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteSoapBinding"> <soap:address location= "http://example.com/stockquote"/> </port> </service>

--Nombre del servicio --Nombre de la aplicaci贸n --Nombre del puerto --Tipo de enlace --Ubicaci贸n --Etiqueta de cierre puerto --Etiqueta de cierre servicio


WSDL Como ya se ha especificado, la parte pública de la aplicación de una empresa es un XML, ese tipo de dato se denomina WSDL (Web Service Description Language), no es más que:  Un formato XML para describir los servicios como una serie de puntos de acceso operativos, conteniendo cada uno su información orientada hacia el documento o procedimiento.  Las operaciones y mensajes están descritos abstractamente, atados a un protocolo de red concreto y formato de mensaje para definir su punto de acceso.  Estos puntos de acceso están combinados en puntos de acceso abstractos(servicios). Un WSDL es extensible para permitir la descripción de servicios y sus mensajes en el formato de mensaje que tenga o protocolo usado para comunicarse.


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 output  service = Conjunto de “ports” relacionados que implementan el servicio.


V茅ase a continuaci贸n un WSDL ejemplo: <?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> <portType name="Hello_PortType"> <operation name="sayHello"> <input message="tns:SayHelloRequest"/> <output message="tns:SayHelloResponse"/> </operation> </portType>


ContinuaciĂłnâ&#x20AC;Ś <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>


ContinuaciĂłnâ&#x20AC;Ś

<service name="Hello_Service"> <documentation>WSDL File for HelloService</documentation> <port binding="tns:Hello_Binding" name="Hello_Port"> <soap:address location="http://localhost:8080/soap/servlet/rpcrouter"/> </port> </service> </definitions>


wsdl