« test | Main | Story of #, sometimes called Octothorpe »

WS-Addressing and WS-MessageDelivery

I thought I'd write up and share a fairly quick comparison of WS-Addressing and WS-MessageDelivery. I wrote this up to help some of our folks do a comparison, and it might be useful to other folks. I'm sure I've made some errors and people will let me know, so count on another revision or 2 :-)

The SOAP Headers are very similar, matching up almost exactly.

The WS-Addressing specification relies on the contents of run time messages to implicitly define message exchange patterns when just WS-Addressing is used and WS-Policy for interactions that are WS-Addressing dependent. For example, WS-ReliableMessaging uses WS-Addressing, and WS-RM is attached to a Web service by WS-Policy statements. WS-Addressing uses Endpoint References for refering to service instances.

WS-MD provides WSDL extensions and features and properties for a number of it's functions. To a certain extent, WS-Addressing as part of the WS-* stack uses WS-Policy for extensibility and WS-MD uses features and properties for extensibility. WS-MD uses a WS-Ref structure to identify service instances.

Endpoint addresses
WS-Addressing uses an Endpoint reference consisting of a URI address, reference properties, port type, service Qname, and Policy to provide identifying information. Reference Properties are information items sent in an Endpoint Reference and then echoed as a soap header on any response.

WS-MD defines a WS-Ref that uses a WSDL service element and mixes in a portType reference to constrain the service to a particular portType. There are 3 flavours of WS-Ref: portType + binding static, portType static + binding dynamic, and portType + binding dymamic. WS-MD uses WS-Ref, URI, a Service QName, and optional extensibility elements for endpoints. When a WS-Ref is present, the endpoint address should also have a wsdl:location attribute set. An endpoint address requires a targetNamespace when the wsdl 1.1 service element does not have a target namespace. There is no facility for requiring echoing of information ala reference properties.

Message Information Headers

A table of properties(types):

WS-Addressing            WS-MD
From (EPR) MessageOriginator (wsdlLocation|service|uri|serviceQname)
To (URI) MessageDestination (wsdlLocation|service|uri|serviceQname)
ReplyTo (EPR) ReplyDestination (wsdlLocation|service|uri|serviceQname)
FaultDestination (EPR) FaultTo (wsdlLocation|service|uri|serviceQname)
MessageID (URI) MessageId (URI)
RelatesTo (URI) MessageReference (URI)
Action (URI) OperationName (NCName)

The required WS-Addressing information headers are "To" and "Action". MessageId is required when FaultTo or ReplyTo are present on a request. The rest are optional. WS-MD required headers are MEP dependent.

WS-Addressing provides an "anonymous" URI in cases where endpoints can't be specified in a message and an EPR is required.

WS-Addressing provides 2 mechanisms to associate the Action field with WSDL elements in a portType. There is an explicit association where the action is specified in the input/output/fault, a default action based upon the input/output name or the WSDL 1.1 section 2.4.5 rules for naming anonymous input/output. WS-MD provides no mechanism for supplying a different name than the operation or for generating an operation name in an anonymous input/output.

Faults
WS-Addressing provides 5 faults and bindings of the faults to SOAP 1.1 and SOAP 1.2.

WS-MD provides no faults.

Message Exchange Patterns
WS-Addressing defines no MEPs.

WS-MD defines the messageDeliveryFeature feature for operations and bindings that specify the information headers required for messages in the 4 WSDL defined message exchange patterns. The implication is that a client will know which headers must be sent for a given mep by using the WSDL.

Callback MEP
WS-Addressing implicitly defines a callback whenever a ReplyTo or FaultTo header is present.

WS-MD explicitly defines a callback by the use of a "ResponseOperation" WSDL element that may be present on a one-way or request/response operation to indicate which other operation is the response. This is similar to the BPEL "partner/servicelink" construct.

WSDL 2.0
WS-Addressing makes no reference to WSDL 2.0.

WS-MD WS-Ref structure is replaced by the WSDL 2.0 service element. The required information headers for the 7 WSDL 2.0 MEPs is defined.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on July 29, 2004 5:07 PM.

The previous post in this blog was test.

The next post in this blog is Story of #, sometimes called Octothorpe.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.34