El lenguaje de descripción de servicios web ( WSDL / ˈ w ɪ z d əl / ) es un lenguaje de descripción de interfaz basado en XML que se utiliza para describir la funcionalidad que ofrece un servicio web . El acrónimo también se usa para cualquier descripción WSDL específica de un servicio web (también conocida como archivo WSDL ), que proporciona una descripción legible por máquina de cómo se puede llamar al servicio, qué parámetros espera y qué estructuras de datos devuelve. Por lo tanto, su propósito es similar al de una firma de tipo en un lenguaje de programación.
La última versión de WSDL, que se convirtió en recomendación del W3C en 2007, es WSDL 2.0. El significado del acrónimo ha cambiado con respecto a la versión 1.1, donde la "D" significaba "Definición".
Descripción

El WSDL describe los servicios como conjuntos de puntos finales de red , o puertos . La especificación WSDL proporciona un formato XML para la documentación. Las definiciones abstractas de puertos y mensajes se separan de su uso o instancia concreta, lo que permite reutilizar dichas definiciones. Un puerto se define asociando una dirección de red con una vinculación reutilizable, y un conjunto de puertos define un servicio. Los mensajes son descripciones abstractas de los datos que se intercambian, y los tipos de puerto son conjuntos abstractos de operaciones compatibles. Las especificaciones concretas de protocolo y formato de datos para un tipo de puerto específico constituyen una vinculación reutilizable, donde las operaciones y los mensajes se vinculan a un protocolo de red y un formato de mensaje concretos. De esta forma, el WSDL describe la interfaz pública del servicio web.
WSDL se utiliza frecuentemente en combinación con SOAP y un esquema XML para proporcionar servicios web a través de Internet . Un programa cliente que se conecta a un servicio web puede leer el archivo WSDL para determinar qué operaciones están disponibles en el servidor. Los tipos de datos especiales utilizados se encuentran integrados en el archivo WSDL en forma de esquema XML. El cliente puede entonces usar SOAP para invocar una de las operaciones listadas en el archivo WSDL, por ejemplo, mediante XML sobre HTTP .
La versión actual de la especificación es 2.0; la versión 1.1 no ha sido respaldada por el W3C , pero la versión 2.0 es una recomendación del W3C . [ 1 ] WSDL 1.2 fue renombrado WSDL 2.0 debido a sus diferencias sustanciales con respecto a WSDL 1.1. Al aceptar el enlace a todos los métodos de solicitud HTTP (no solo GET y POST como en la versión 1.1), la especificación WSDL 2.0 ofrece un mejor soporte para los servicios web RESTful y es mucho más simple de implementar. [ 2 ] [ 3 ] Sin embargo, el soporte para esta especificación aún es deficiente en los kits de desarrollo de software para servicios web que a menudo ofrecen herramientas solo para WSDL 1.1.Por ejemplo, la versión 2.0 del lenguaje de ejecución de procesos de negocio (BPEL) solo admite WSDL 1.1.
Ejemplo de archivo WSDL
<?xml version="1.0" encoding="UTF-8"?> <description xmlns= "http://www.w3.org/ns/wsdl" xmlns:tns= "http://www.tmsws.com/wsdl20sample" xmlns:whttp= "http://schemas.xmlsoap.org/wsdl/http/" xmlns:wsoap= "http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace= "http://www.tmsws.com/wsdl20sample" ><documentation> Este es un documento WSDL 2.0 de ejemplo . </documentation><!-- Tipo abstracto --> <types> <xs:schema xmlns:xs= "http://www.w3.org/2001/XMLSchema" xmlns= "http://www.tmsws.com/wsdl20sample" targetNamespace= "http://www.example.com/wsdl20sample" > <xs:element name= "request" > ... </xs:element> <xs:element name= "response" > ... </xs:element> </xs:schema> </types><!-- Interfaces abstractas --> <interface name= "Interface1" > <fault name= "Error1" element= "tns:response" /> <operation name= "Get" pattern= "http://www.w3.org/ns/wsdl/in-out" > <input messageLabel= "In" element= "tns:request" /> <output messageLabel= "Out" element= "tns:response" /> </operation> </interface><!-- Enlace concreto sobre HTTP --> <binding name= "HttpBinding" interface= "tns:Interface1" type= "http://www.w3.org/ns/wsdl/http" > <operation ref= "tns:Get" whttp:method= "GET" /> </binding> <!-- Enlace concreto con SOAP--> <binding name= "SoapBinding" interface= "tns:Interface1" type= "http://www.w3.org/ns/wsdl/soap" wsoap:protocol= "http://www.w3.org/2003/05/soap/bindings/HTTP/" wsoap:mepDefault= "http://www.w3.org/2003/05/soap/mep/request-response" > <operation ref= "tns:Get" /> </binding><!-- Servicio web que ofrece puntos finales para ambos enlaces--> <service name= "Service1" interface= "tns:Interface1" > <endpoint name= "HttpEndpoint" binding= "tns:HttpBinding" address= "http://www.example.com/rest/" /> <endpoint name= "SoapEndpoint" binding= "tns:SoapBinding" address= "http://www.example.com/soap/" /> </service> </description>Historia
WSDL 1.0 (septiembre de 2000) fue desarrollado por IBM , Microsoft y Ariba para describir servicios web para su conjunto de herramientas SOAP. Se creó combinando dos lenguajes de descripción de servicios: NASSL (Network Application Service Specification Language) de IBM y SDL (Service Description Language) de Microsoft.
WSDL 1.1, publicado en marzo de 2001, es la formalización de WSDL 1.0. No se introdujeron cambios importantes entre la versión 1.0 y la 1.1.
WSDL 1.2 (junio de 2003) era un borrador de trabajo del W3C, pero se convirtió en WSDL 2.0. Según el W3C: WSDL 1.2 es más fácil y flexible para los desarrolladores que la versión anterior. WSDL 1.2 intenta eliminar las características no interoperables y también define mejor el enlace HTTP 1.1. WSDL 1.2 no era compatible con la mayoría de los servidores/proveedores SOAP.
WSDL 2.0 se convirtió en una recomendación del W3C en junio de 2007. WSDL 1.2 pasó a llamarse WSDL 2.0 debido a que presenta diferencias sustanciales con respecto a WSDL 1.1. Los cambios son los siguientes:
- Se añadieron más elementos semánticos al lenguaje de descripción.
- Se eliminaron las estructuras de mensajes.
- No se admite la sobrecarga del operador.
- PortTypes se renombró a interfaces.
- Puertos renombrados a puntos finales
Subconjunto WSDL
Subset WSDL (SWSDL) [ 4 ] es un WSDL con operaciones de subconjunto de un WSDL original. Un desarrollador puede usar SWSDL para acceder a Subset Service y, por lo tanto, manejar un subconjunto del código del servicio web. Un Subset WSDL se puede usar para realizar pruebas de servicios web y desarrollo descendente. La segmentación de un servicio web se puede hacer usando un Subset WSDL para acceder a Subset Service. Subset Service se puede categorizar en capas usando SWSDL. Los SWSDL se utilizan para el análisis, las pruebas y el desarrollo descendente de servicios web. AWSCM [ 5 ] es una herramienta que puede identificar operaciones de subconjunto en un archivo WSDL para construir un Subset WSDL.
Consideraciones de seguridad
Dado que los archivos WSDL son una especificación basada en XML para describir un servicio web, son susceptibles a ataques. [ 6 ] Para mitigar la vulnerabilidad de estos archivos, se recomienda limitar el acceso a los archivos WSDL generados, establecer restricciones de acceso adecuadas a las definiciones WSDL y evitar definiciones innecesarias en los servicios web.
Véase también
Referencias
- ↑ "Web Services Definition Language (WSDL) Version 2.0 Part 1: Core Language" . Consultado el 27 de junio de 2007 .
- ↑ "Lenguaje de definición de servicios web (WSDL) Versión 2.0 Parte 2: Complementos" .
- ↑ "Enlace HTTP WITW WSDL 2.0" . Archivado del original el 20 de junio de 2012. Consultado el 20 de septiembre de 2007 .
- ↑ Chaturvedi, Animesh (2014). Subset WSDL to Access Subset Service for Analysis . 2014 IEEE 6th International Conference on Cloud Computing Technology and Science. p. 688. doi : 10.1109/CloudCom.2014.149 . ISBN 978-1-4799-4093-6.
- ↑ Chaturvedi, Animesh (2014). Automated Web Service Change Management AWSCM - A Tool . 2014 IEEE 6th International Conference on Cloud Computing Technology and Science. p. 715. doi : 10.1109/CloudCom.2014.144 . ISBN 978-1-4799-4093-6.
- ↑ "Divulgación WSDL" . Consultado el 31 de mayo de 2017 .
Enlaces externos
- Especificación WSDL 1.0
- Especificación WSDL 1.1
- Especificación WSDL 2.0
- Parte 0: Introducción (Última versión)
- Parte 1: Núcleo (Última versión)
- Parte 2: Complementos (Última versión)
- Grupo de trabajo sobre la descripción de los servicios web
- Actividad del protocolo XML
- JSR-110: API de Java para WSDL
- JSR 172: Especificación de servicios web Java ME
- Validador WSDL en línea
- Enlaces WSDL para Java archivados el 11 de abril de 2009 en la Wayback Machine para XMLBeans y JAXB.
- RELAX-WS: Lenguaje sencillo para la definición de servicios web basado en la sintaxis compacta de RELAX NG.
- Kevin Liu. Un vistazo a WSDL 2.0 . Fecha de acceso: 20 de abril de 2010.
- Estándares basados en XML
- Especificaciones del servicio web
- Estándares del Consorcio World Wide Web