This note is an appendix to the paper
http://snrc.stanford.edu/~petrie/fx-agents/xserv/icpaper/
[Appendix A] : Critique of WSDL as a Language Definition
The WSDL format for describing services is based on a notion
of simple services. A simple service takes one request
(data), transforms it in some (useful) way, and returns one output
(data) - or a statement of error, is otherwise stateless, and has no
public side effects.
SimpServ ={ Input <data>,
Output <data>}
- A simple service is a WSDL Operation.
A WSDL Service is a set of
Ports, which are sets of bindings to
PortTypes, which are sets of operations.
- Operations have input and output messages
The messages may have various parts,
which may be AND/OR (using the <choice> tag.)
- Usually the messages are one-way or
simple request-response received then sent by the service.
- However, in theory, the services may also initiate
messages:
solicit-response and notification messages
are important for extended transaction services.
- The two response type of messages support
an optional fault tag as well as
input and output tags.
The primary deficiencies of this format as a language are:
- There are no input or output parameters, like
all other reasonable languages,
- There is no reference by pointer (only value
except perhaps a URL could be used),
- A service is called an "operation"
and a "service" is really a collection
of entrypoints, for a service provider, that
might have better been called a
"service package" or "service platform".
- The tag system is hierarchical rather than relational
and sometimes the hierarchical means association and
sometimes aggregation, and is inconsistent.
- Service aggregates Ports
- Binding is a part of the Port tag
as well as its own tag,
which associates
a Port with a PortType.
- PortType aggregates Operations
- Operations are a supertag for
the input and "output" tags
of which Message is a part.
- Message tags are not defined as subtags
of Operations but as stand-alone tags
associated, like the Binding tag.
- The "standard" has no certification
as evidenced by typos in the very first example1 in the W3C document.
- binding="tns:StockQuoteBinding"
- binding name="StockQuoteSoapBinding"
1
http://www.w3.org/TR/wsdl#_wsdl