WSDL 2.0 Conceptual Model
The description of a web service can be modeled in two parts. In the abstract part, WSDL describes a web service in terms of messages it sends and receives through a type system, typically W3C XML Schema. Message exchange patterns define the sequence and cardinality of messages. An operation associates message exchange patterns with one or more messages. An interface groups these operations in a transport and wire independent manner.
In the concrete part of the description, bindings specify the transport and wire format for interfaces. A service endpoint associates network address with a binding. Finally, a service groups the endpoints that implement a common interface. Figure below shows the conceptual WSDL component model:
This component serves as the root container for other components, most notably interfaces, bindings, and services. Abstract and concrete components are distinctly identified and separated. The service interfaces compose the abstract elements of the document with their respective messages and operations. The binding, service, and endpoints compose the concrete elements of the document.
This component serves as a container for operations, which in turn serves as a container for messages. The importance of this feature arises from the inclusion of Message Exchange Patterns (MEPs), since an operation can consist of more than simple request and response messages.
One of the most discussed features of WSDL 2.0 in the industry is the ability for interfaces to extend one another. This inclusion as a feature, along with the ability to include and import WSDL, certainly makes the job of tool developers more difficult. Yet interface inheritance should increase the reusability of interfaces across an organization.
An interface element encloses a named set of abstract operations and the abstract messages. It can optionally extend one or more other interfaces. Interfaces are referred to by QName in other components such as bindings. The interface operation element has name and pattern as required attributes, while style is an optional attribute. Features defines functionalities associated with the message exchanges between communicating parties, which might include reliability, security, correlation, and routing. Property is used to control the behavior of a feature. It has a set of possible and permissible values specified by references to a schema description. These values can be shared among features.
This component represents the detailed information required to access an endpoint. The binding provides the glue the makes the whole system work and provides mechanisms for defining concrete formats for faults and messages and protocol interactions for interface operations.
The binding element defines the underlying transport and wire format for messages. Each binding in the WSDL references to an interface. All operations defined within the interface must be bound in the binding. An endpoint in the service component references a binding. Both endpoints and bindings are modeled to support flexibility and location transparency. Multiple endpoints with different network address can still share the same protocol binding. WSDL 2.0 Bindings specification defines binding extensions for protocols and message formats such as SOAP, HTTP and MIME.
This component represents the collection of endpoints where the service may be invoked.
Initial thoughts may envision that the Service component contains the bulk of the specification. However, it mainly serves to tie the service interface to one or many endpoints implementing that interface.
A service element describes a set of endpoints which refer to a single network address for a binding. All other protocol specific information is contained in the binding. Service can be referred by QName. service element has a name and interface which are required attributes.
This component represents a collection of information for a given service implementation. The endpoint ties a specific binding to the specific address so the service can be invoked.