El documento de interfaz WSDL define el formato de mensajes de las operaciones y los mensajes definidos para un tipo de puerto en particular.
WSDL (Web Services Description Language) es una especificación estándar para describir servicios de red basados en XML. Proporciona una manera sencilla para que los proveedores de servicio describan el formato básico de las peticiones a sus sistemas independientemente de la implementación en tiempo de ejecución subyacente. Una especificación WSDL contiene las siguientes partes:
El editor de operación permite crear y modificar tipos de puertos, mensajes y tipos. Estos artefactos forman parte del documento de la interfaz de servicio Web.
| Componente: | Contiene: |
|---|---|
| Tipo de puerto | Firma de operación |
| Mensajes | Definiciones de parámetros |
| Tipos | Definiciones de tipo complejo |
| Enlaces | Protocolo de transporte y formato de precarga |
Cuando se implementa el servicio Web, contendrá los siguientes componentes que derivan del documento de WSDL:
La descripción de las operaciones y sus mensajes asociados. PortTypes (tipos de puertos) definen las operaciones abstractas.
<portType name="EightBall">
<operation name="getAnswer">
<input message="ebs:IngetAnswerRequest"/>
<output message="ebs:OutgetAnswerResponse"/>
<operation/>
<portType>
La descripción de los parámetros (entrada y salida) y de los valores de retorno.
<message name="IngetAnswerRequest">
<part name="meth1_inType" type="ebs:questionType"/>
</message>
<message name="OutgetAnswerResponse">
<part name="meth1_outType" type="ebs:answerType"/>
</message>
El esquema que describe tipos XML complejos XML utilizados en los mensajes.
<types>
<xsd:schema targetNamespace="...">
<xsd:complexType name="questionType">
<xsd:element name="question" type="string"/>
</xsd:complexType>
<xsd:complexType name="answerType">
...
Los enlaces (bindings) describe el protocolo utilizando como servicio, así como los formatos de datos de los mensajes definidos para un portType determinado.
<binding name="EightBallBinding" type="ebs:EightBall">
<soap:binding style="rpc" transport="schemas.xmlsoap.org/soap/http">
<operation name="ebs:getAnswer">
<soap:operation soapAction="urn:EightBall"/>
<input>
<soap:body namespace="urn:EightBall" ... />
...
contiene el nombre de servicio Web y una lista de los puertos.
Contiene la ubicación del servicio Web y del enlace utilizado para acceder al servicio.
<service name="EightBall">
<port binding="ebs:EightBallBinding" name="EightBallPort">
<soap:address location="localhost:8080/axis/EightBall"/>
</port>
</service>
La interfaz de servicio abstracta proporciona definiciones de operaciones (funciones) y los mensajes utilizados.
El siguiente ejemplo de archivo WSDL muestra la relación entre los mensajes, la operación y portType que componen una definición de interfaz de servicio.
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="StockQuote"
targetNamespace="http://example.com.wsdl/stockquote/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://example.com.wsdl/stockquote/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="getQuoteRequest">
<part name="ticker" type="xsd:string"/>
</message
<message name="getQuoteResponse">
<part name="result" type="xsd:float"/>
</message
<portType name="StockQuote">
<operation name="getQuote" parameterOrder="ticker">
<input message="tns:getQuoteRequest" name="getQuoteRequest"/>
<output message="tns:getQuoteResponse" name="getQuoteResponse"/>
</operation
</portType
</definitions>