La Web Services Description Language ( WSDL / w ɪ z d əl / ) es un XML basado en lenguaje de descripción de interfaz que se utiliza para describir la funcionalidad ofrecida por un servicio web . El acrónimo también se utiliza para cualquier descripción WSDL específica de un servicio web (también conocido 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 más o menos similar al de una firma de tipo en un lenguaje de programación.
Extensión de nombre de archivo | .wsdl |
---|---|
Tipo de medio de Internet | aplicación / wsdl + xml |
Desarrollado por | Consorcio Mundial de la red |
Contenido por | XML |
Estándar | 2.0 Recomendación |
La versión actual de WSDL es WSDL 2.0. El significado del acrónimo ha cambiado desde la versión 1.1, donde la "D" significa "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 documentos con este propósito. Las definiciones abstractas de puertos y mensajes están separadas de su uso o instancia concretos, lo que permite la reutilización de estas definiciones. Un puerto se define asociando una dirección de red con un enlace reutilizable, y una colección de puertos define un servicio. Los mensajes son descripciones abstractas de los datos que se intercambian y los tipos de puerto son colecciones abstractas de operaciones admitidas. El protocolo concreto y las especificaciones de formato de datos para un tipo de puerto en particular constituyen un enlace reutilizable, donde las operaciones y los mensajes se vinculan a un protocolo de red concreto y un formato de mensaje. De esta forma, WSDL describe la interfaz pública del servicio web.
WSDL se utiliza a menudo 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. Todos los tipos de datos especiales utilizados se incrustan en el archivo WSDL en forma de esquema XML. A continuación, el cliente puede utilizar SOAP para llamar realmente a una de las operaciones enumeradas en el archivo WSDL utilizando, por ejemplo, XML sobre HTTP.
La versión actual de la especificación es 2.0; la versión 1.1 no ha sido aprobada por el W3C pero la versión 2.0 es una recomendación del W3C . [1] WSDL 1.2 pasó a llamarse WSDL 2.0 debido a sus diferencias sustanciales con WSDL 1.1. Al aceptar la vinculación 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 sigue siendo deficiente en los kits de desarrollo de software para servicios web, que a menudo ofrecen herramientas solo para WSDL 1.1. [ necesita actualización ] [ cita requerida ] Por ejemplo, la versión 2.0 del Business Process Execution Language (BPEL) solo es compatible con WSDL 1.1.
Término WSDL 1.1 | Término WSDL 2.0 | Descripción |
---|---|---|
Servicio | Servicio | Contiene un conjunto de funciones del sistema que se han expuesto a los protocolos basados en web. |
Puerto | Punto final | Define la dirección o el punto de conexión a un servicio web. Por lo general, se representa mediante una simple cadena de URL HTTP. |
Unión | Unión | Especifica la interfaz y define el estilo de enlace SOAP ( RPC / Documento) y el transporte ( Protocolo SOAP ). La sección de vinculación también define las operaciones. |
PortType | Interfaz | Define un servicio web, las operaciones que se pueden realizar y los mensajes que se utilizan para realizar la operación. |
Operación | Operación | Define las acciones SOAP y la forma en que se codifica el mensaje, por ejemplo, "literal". Una operación es como una llamada a un método o función en un lenguaje de programación tradicional. |
Mensaje | N / A | Normalmente, un mensaje corresponde a una operación. El mensaje contiene la información necesaria para realizar la operación. Cada mensaje se compone de una o más partes lógicas. Cada parte está asociada con un atributo de escritura de mensajes. El atributo de nombre de mensaje proporciona un nombre único entre todos los mensajes. El atributo de nombre de parte proporciona un nombre único entre todas las partes del mensaje adjunto. Las partes son una descripción del contenido lógico de un mensaje. En la vinculación RPC, una vinculación puede hacer referencia al nombre de una parte para especificar información específica de la vinculación sobre la parte. Una parte puede representar un parámetro en el mensaje; los enlaces definen el significado real de la pieza. Los mensajes se eliminaron en WSDL 2.0, en el que se hace referencia a los tipos de esquema XML para definir cuerpos de entradas, salidas y fallas de manera simple y directa. |
Tipos | Tipos | Describe los datos. El lenguaje de esquema XML (también conocido como XSD ) se utiliza (en línea o referenciado) para este propósito. |
Subconjunto WSDL
Subconjunto WSDL (SWSDL) [4] es un WSDL con las operaciones de subconjunto de un WSDL original. Un desarrollador puede usar SWSDL para acceder al servicio de subconjunto y, por lo tanto, manejar un subconjunto del código del servicio web. Se puede utilizar un subconjunto WSDL para realizar pruebas de servicios web y desarrollo de arriba hacia abajo. La división de un servicio web se puede realizar mediante un subconjunto WSDL para acceder al servicio de subconjunto. El servicio de subconjunto se puede clasificar en capas mediante SWSDL. Los SWSDL se utilizan para el análisis, las pruebas y el desarrollo descendente de servicios web. AWSCM [5] es la herramienta pionera para construir SWSDL con éxito.
Ejemplo de archivo WSDL
xml version = "1.0" encoding = "UTF-8"?> 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 " > ón> Este es un documento WSDL 2.0 de muestra. xmlns: xs = "http://www.w3.org/2001/XMLSchema" xmlns = "http://www.tmsws.com/wsdl20sample" targetNamespace = "http://www.example.com/wsdl20sample" > name = "request" > ... name = "response" > ... < nombre de interfaz = "Interfaz1" > < nombre de error = "Error1" elemento = "tns: respuesta" /> < nombre de operación = "Obtener" patrón = "http: //www.w3 .org / ns / wsdl / in-out " > messageLabel = " In " element = " tns: request " /> messageLabel = " Out " element = " tns: response " /> Enlace de hormigón a través de HTTP -> < nombre de enlace = "HttpBinding" interface = "tns: Interface1" type = "http://www.w3.org/ns/wsdl/http" > ref = " tns: Obtener " whttp: method = " GET " /> 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 " > ón> ref = "tns: Get" /> < nombre del servicio = "Servicio1" interfaz = "tns: Interfaz1" > < nombre del punto final = "HttpEndpoint" enlace = "tns: HttpBinding" dirección = "http: // www.example.com/rest/ " /> name = " SoapEndpoint " binding = " tns: SoapBinding " address = " http://www.example.com/soap/ " />
Historia
IBM , Microsoft y Ariba desarrollaron WSDL 1.0 (septiembre de 2000) para describir los servicios web para su kit de herramientas SOAP. Se creó combinando dos lenguajes de descripción de servicios: NASSL (Lenguaje de especificación de servicios de aplicaciones de red) de IBM y SDL (Lenguaje de descripción de servicios) de Microsoft.
WSDL 1.1, publicado en marzo de 2001, es la formalización de WSDL 1.0. No se introdujeron cambios importantes entre 1.0 y 1.1.
WSDL 1.2 (junio de 2003) era un borrador de trabajo en W3C, pero se ha convertido en WSDL 2.0. Según 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 fue 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 porque tiene diferencias sustanciales con WSDL 1.1. Los cambios son los siguientes:
- Se agregó más semántica al lenguaje de descripción.
- Construcciones de mensajes eliminadas
- No se admite la sobrecarga del operador
- PortTypes renombrado a interfaces
- Puertos renombrados a puntos finales
Consideraciones de Seguridad
Dado que los archivos WSDL son una especificación basada en XML para describir un servicio web, los archivos WSDL son susceptibles de ser atacados. [6] Para mitigar la vulnerabilidad de estos archivos, se recomienda limitar el acceso a los archivos WSDL generados, establecer restricciones de acceso adecuadas en las definiciones WSDL y evitar definiciones innecesarias en los servicios web.
Ver también
Referencias
- ^ "Lenguaje de definición de servicios web (WSDL) versión 2.0 parte 1: lenguaje principal" . Consultado el 27 de junio de 2007 .
- ^ "Lenguaje de definición de servicios web (WSDL) Versión 2.0 Parte 2: Adjuntos" .
- ^ "Enlace HTTP WITW WSDL 2.0" .
- ^ Chaturvedi, Animesh (2014). Subconjunto WSDL para acceder al servicio subconjunto de Análisis . 2014 IEEE 6th International Conference on Cloud Computing Technology and Science. pag. 688. doi : 10.1109 / CloudCom.2014.149 . ISBN 978-1-4799-4093-6.
- ^ Chaturvedi, Animesh (2014). Gestión automatizada de cambios de servicios web AWSCM: una herramienta . 2014 IEEE 6th International Conference on Cloud Computing Technology and Science. pag. 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: Primer (última versión)
- Parte 1: Core (última versión)
- Parte 2: Adjuntos (última versión)
- Grupo de trabajo de descripción de 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
- Navegador WSDL en línea y cliente de prueba
- Visualización programática WSDL con Linguine Maps
- SSDL: lenguaje de descripción del servicio SOAP
- Enlaces WSDL Java para XMLBeans y JAXB.
- RELAX-WS: lenguaje de definición de servicios web simple basado en RELAX NG Compact Syntax