Un WSDL es la especificación estándar de
funcionamiento y datos de un servicio Web XML. WSDL se maneja a través de un contrato, conocido también como Service
Description, que es un documento XML que contiene información relacionada al
servicio Web XML y los paquetes de datos
que el servicio Web XML maneja, tanto de
entrada como de salida.
De cierta forma WSDL específica los datos
requeridos por el servicio, su comportamiento, y sus datos de retorno; actúa
como un contrato de intercambio de paquetes de datos entre el consumidor de
servicios Web XML y el servicio Web XML.
WSDL también contiene las referencias a las
direcciones asociadas con el servicio Web XML, mismas que dependerán del
protocolo utilizado para consumir el servicio.
El documento WSDL es un documento XML; el
elemento raíz es llamado definitions, y contiene cinco nodos hijos que muestran
la forma en que está definido el servicio Web XML. Dichos elementos hijo son
los siguientes:
- Types. Define los tipos de datos utilizados para el intercambio de mensajes entre el consumidor y el servicio.
- Message. Describe los mensajes que serán comunicados entre el consumidor y el servicio.
- portType. Identifica el conjunto de operaciones que realiza el servicio, y los mensajes involucrados en dichas operaciones.
- Binding. Específica los detalles de protocolo para el intercambio de mensajes entre las operaciones, describiendo cómo traducir contenido abstracto a un formato estándar.
- Service. Agrupa aquellos puertos que estén relacionados, y que implementan un Web service.
- Para generar un WSDL, se utiliza la utilería wsdl.exe con la siguiente sintaxis:
- Wsdl /l:Lenguaje /n:NombreNamespace URL_Servicio
Donde Lenguaje es el lenguaje que se desea
utilizar, NombreNamespace es el nombre del espacio de nombres a generarse en el
WSDL, y URL_Servicio es el URL del servicio Web XML a partir del cual se generará
WSDL.
La ejecución de wsdl.exe sobre el servicio Web
XML producirá un programa generado en el lenguaje especificado, que deberá ser
compilado como librería para su uso programático. Dicho programa contendrá la
misma funcionalidad del servicio Web XML, con todas las especificaciones
descriptivas.
Este es un ejemplo de un documento WSDL donde
<message> específica el mensaje individual XML que son transformados
entre computadoras, en este caso “getWeatherRequest” and “getWeatherResponse”,
y <service> específica que el
servicio esta disponible vía SOAP.
<?xml
version="1.0" encoding="UTF8"?>
<definitions
name="WeatherService"
targetNamespace="http://www.ecerami.com/wsdl/WeatherService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.ecerami.com/wsdl/WeatherService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<message name="getWeatherRequest">
<part name="zipcode"
type="xsd:string"/>
</message>
<message name="getWeatherResponse">
<part name="temperature"
type="xsd:int"/>
</message>
<portType name="Weather_PortType">
<operation name="getWeather">
<input
message="tns:getWeatherRequest"/>
<output
message="tns:getWeatherResponse"/>
</operation>
</portType>
<binding name="Weather_Binding"
type="tns:Weather_PortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getWeather">
<soap:operation soapAction=""/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:weatherservice"
use="encoded"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="urn:examples:weatherservice"
use="encoded"/>
</output>
</operation>
</binding>
<service name="Weather_Service">
<documentation>WSDL File for Weather
Service</documentation>
<port binding="tns:Weather_Binding"
name="Weather_Port">
<soap:address
location="http://localhost:8080/soap/servlet/rpcrouter"/>
</port>
</service>
</definitions>
No hay comentarios:
Publicar un comentario