Thursday, September 26, 2013

Web Services Description Language (WSDL)

WSDL stands for Web Services Description Language.  It is written in XML. It is used to describe  and locate Web services. WSDL Document describes a Web service. It specifies the location of the service and the operations (or methods) the service exposes.

The WSDL Document Structure

A WSDL document describes a web service using these major elements:


Element Description
Definition The Definition element must be the root element of all WSDL documents. It defines the name of the web service.
Types The Types element describes all the data types used between the client and server.
Message A typed definition of the data being communicated. Each message can consist of one or more parts. The parts can be compared to the parameters of a function call in a traditional programming language.
PortType A set of operations supported by one or more endpoints. Defines the connection point to a web service. It can be compared to a function library (or a module, or a class) in a traditional programming language. Each can be compared to a function in a traditional programming language.
Binding A protocol and data format specification for a particular port type. WSDL bindings defines the message format and protocol details for a web service. The soap:binding element has two attributes - style and transport.
Service The Service element defines the ports supported by the Web service. For each of the supported protocols, there is one port element. The service element is a collection of ports.
Port A element defines an individual endpoint by specifying a single address for a binding.

Following is the WSDL file that is provided to demonstrate a simple WSDL program.


Assuming 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!".


Content of HelloService.wsdl file :



<definitions name="HelloService"
   targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl"
   xmlns="http://schemas.xmlsoap.org/wsdl/"
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:tns="http://www.examples.com/wsdl/HelloService.wsdl"
   xmlns:xsd="http://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="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="sayHello">
      <soap:operation soapAction="sayHello"/>
      <input>
        <soap:body
           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
           namespace="urn:examples:helloservice"
           use="encoded"/>
      </input>
      <output>
        <soap:body
           encodingStyle="http://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="http://www.examples.com/SayHello/">
      </port>
  </service>
</definitions>

Analysis of the Example :

Definition : 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 response service.
Binding: Direction to use the SOAP HTTP transport protocol.
Service: Service available at http://www.examples.com/SayHello/.
Port: Associates the binding with the URI http://www.examples.com/SayHello/ where the running service can be accessed.



No comments:

Post a Comment