Web Services Description Language
According to the WSDL 1.1 specification, WSDL is defined as:
WSDL is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. The operations and messages are described abstractly, and then bound to a concrete network protocol and message format to define an endpoint. Related concrete endpoints are combined into abstract endpoints (services)
In simple terms, WSDL provides a formal definition of the web service through abstract and concrete definitions of the interface. The following diagram shows the main structure of a WSDL document:
WSDL is an XML document with a <definitions>
element at the root and the child elements, <types>
, <message>
, <portType>
, and <binding>
. These can be explained as follows:
The
<types>
element is used to define the data types used by the web service usually through a XML schema. The schema can be defined inline as a child element of<types>
or can be imported from an external URL.The
<message>
element defines an abstract representation of all the messages used by the web service. A message consists of logical parts, each of which is associated with a definition within some type in the XML schema of the web service. The following image is an example of a message:The
<portType>
element is an abstract representation of the operations and message exchange patterns used in the web service. Operations represent a specific action performed by a web service and which can be related to the public methods used by a program. Operations have input and output parameters and those are represented as messages. Hence, an operation consists of sets of input and output messages. This is evident from the following image:In the preceding example, the
SampleServicePortType
element includes a single child element,<wsdl:operation name="echoString">
, which itself includes two child elements to define the input and output messages processed by theechoString
operation.The
<binding>
element connects the abstract web service interface defined by<portType>
and<message>
elements into a physical transport protocol. A binding represents a particular transport technology that the service uses to communicate. For example, SOAP v1.1 is one such commonly used binding.
We will discuss about the WSDL in detail in Chapter 2, The Sample Project, using the one that is used in the sample project.