WS-Addressing
This
new submission to the W3C defines two important concepts of the
WS-stack in a transport independent way:
- endpoint references
- message header information
What is very important to understand is that WSDL
and SOAP were never designed to model complex interactions. The limitations include
no (standard) ways to:
- Define a "unit of work" spanning
multiple operation invocations (begin / end)
- Specify the sequence in which
operation needs to be invoked
- Correlate operations invocations as
part of a unit of work
In other words, WSDL assumes that operations do
not participate in any form of session (I don't want to use
"stateless").
WS-Addressing initiates a major transformation of
the web services landscape with the advent of the "end-point".
WSDL let you defines the interface and the classes that implement a
particular interface whole an end-point maps to an instance that
conform a particular class. As such, end points can be and are
generally dynamically created.

An end-point is uniquely identified by its
"address" and properties. Note that the end-point address may and is
generally different from the service port address. Logically,
properties should be exclusively used to convey (instance)
correlation information, though I am pretty sure they will be abused
to convey context as well.
In addition to specifying an end-point definition,
WS-Addressing specifies also the way end-points are used and mapped
within SOAP 1.2.
In this section the specification introduces the
notion of "Action". Actions are related to operations implicitly
(via a pattern including amongst other things operation and input or
output names), or explicitly, as a WSDL extension in the port type
definition where the action names are added to the operation input
and output.
The concept of action creates an interesting side
effect by diminishing the importance of the message type associated
to an input or output. Now that WS-* offer an unambiguous way to
specify the intent of a SOAP message, we don't need to rely on the
message type to figure it out. I will not be surprised if over time
people people keep message types completely open -as it happens
today already-, or maybe being a little bit cleaner, if they
associate multiple message types to a given operation input or
output.
WS-Addressing was long overdue as a commonly
agreed way of specifying service invocation instances. I will not be
surprised if the wide adoption of this specification changes
dramatically the way people have been using web services while
enabling a new class of applications of web services technologies.