Web Services Description Language (WSDL)
WSDL is the standard format for describing a Web service. WSDL was developed jointly by Microsoft and IBM.
Significance of WSDL
- WSDL is an XML-based protocol for information exchange in decentralized and distributed environments.
- WSDL definitions describe how to access a web service and what operations it will perform.
- WSDL is a language for describing how to interface with XML-based services.
- WSDL is an integral part of Universal Description, Discovery, and Integration (UDDI), an XML-based worldwide business registry.
- WSDL is the language that UDDI uses.
- WSDL is often used in combination with SOAP and XML Schema to provide web services over the Internet.
- The WSDL file is used to describe in a nutshell what the web service does and gives the client all the information required to connect to the web service and use all the functionality provided by the web service.
Working of WSDL
- Given below is a WSDL file that is provided to demonstrate a simple WSDL program.
- Let us assume the service provides a single publicly available function, called sayHello. This function expects a single string parameter and returns a single string greeting. For example, if you pass the parameter world then service function sayHello returns the greeting, "Hello, world!”.
- Example - Contents of HelloService.wsdl file
<definitions name = "HelloService" targetNamespace = "https://www.examples.com/wsdl/HelloService.wsdl" xmlns = "https://schemas.xmlsoap.org/wsdl/" xmlns:soap = "https://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns = "https://www.examples.com/wsdl/HelloService.wsdl" xmlns:xsd = "https://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> <binding name = "Hello_Binding" type = "tns:Hello_PortType"> <soap:binding style = "rpc" transport = "https://schemas.xmlsoap.org/soap/http"/> <operation name = "sayHello"> <soap:operation soapAction = "sayHello"/> <input> <soap:body encodingStyle = "https://schemas.xmlsoap.org/soap/encoding/" namespace = "urn:examples:helloservice" use = "encoded"/> </input> <output> <soap:body encodingStyle = "https://schemas.xmlsoap.org/soap/encoding/" namespace = "urn:examples:helloservice" use = "encoded"/> </output> </operation> </binding> <service name = "Hello_Service"> <documentation>WSDL File for HelloService</documentation> <port binding = "tns:Hello_Binding" name = "Hello_Port"> <soap:address location = "https://www.examples.com/SayHello/" /> </port> </service> </definitions>
- Definitions − HelloService
- Type − Using built-in data types and they are defined in XMLSchema.
- Message −
- sayHelloRequest − firstName parameter
- sayHelloresponse − greeting return value
- Port Type − sayHello operation that consists of a request and a response service.
- Binding − Direction to use the SOAP HTTP transport protocol.
- Service − Service available at
- Port − Associates the binding with the URI
https://www.examples.com/SayHello/where the running service can be accessed.