Re: SOAP binding: Action and Message-Id

Hi Philippe.

Sharing some thoughts on the mailing list that we discussed on the
phone:

* Philippe Le Hegaret <plh@w3.org> [2005-02-15 14:56-0500]
[..]
> From: CVS Update Notifier
> To: Mirrors
> Content-Type: application/soap+xml;action=http://www.w3.org/2004/09/DirectoryUpdate
> Subject: Mirror update
> Message-Id: <20050215190310.10C08D69C9@localhost>
> Date: Tue, 15 Feb 2005 19:03:10 +0000 (GMT)
> 
> <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
>             xmlns="http:/www.w3.org/2004/09/mirror"
>             xmlns:wsa="http://www.w3.org/2005/02/addressing">
>   <s:Header>
>     <wsa:To s:mustUnderstand="true">http://www.w3.org/2005/02</wsa:To>
>     <wsa:From>
>       <wsa:Address>file://main/u/jigsaw/CVSTREE/WWW/2005/02</wsa:Address>
>     </wsa:From>
>     <wsa:Action>http://www.w3.org/2004/09/DirectoryUpdate</wsa:Action>
>   </s:Header>
>   <s:Body>
>     <mirror timestamp="2005-02-15T19:03:11Z" user="anonymous">
>       <resource action='modified'>15-addressing.html</resource>
>       <message>Updated the Addressing namespace. Made absolute URIs.</message>
>     </mirror>
>   </s:Body>
> </s:Envelope>
> 
> 2 points on this message:
> - the SOAP action parameter value is duplicated, both in the addressing
> and content-type headers.

I believe that our SOAP 1.2 binding ought to be better aligned with
SOAP 1.2 concepts. In particular:
- we haven't defined it as a SOAP 1.2 module.
- the Addressing [action] property ought to have a clear relationship
  with the SOAP Action Feature[1] (ideally, the answer will be that
  its value is the same as the
  http://www.w3.org/2003/05/soap/features/action/Action property, or
  even that it *is* the
  http://www.w3.org/2003/05/soap/features/action/Action property);
  once this is done, we need to decide about its serialization.

I am planning on sending an email real soon (hopefully tomorrow) about
SOAP 1.2 alignment.

> - the message-id information appears at the SMTP level, but not at the
> SOAP level (since the message-id header is generated by the sendmail
> daemon in this case).

This actually isn't a problem as MTAs don't replace the message-id if
there already is one. So, I believe that the right thing to do is to
have the Internet Message Format's Message-Id header's value be
identical to Addressing's [message id] property's.

Then, there is once again the question of serialization that pops up.

> One way to prevent duplication would be to require every addressing
> properties to be contained in the Addressing headers, but this doesn't
> help here since Message-Id is only obtained at the transport protocol
> layer. I could certainly remove the action parameter in the Content-Type
> header but I would wonder about the use of the action parameter in the
> application/soap+xml media type.
> One way out would be to indicate that action and message-id must be
> present either in the SOAP Addressing headers or in the transport
> protocol (and if duplicated, they must be equivalent).

If we consider properties as abstract properties, which they are, then
they can be populated from SOAP headers, or presumably also from
binding artifacts (e.g. the action parameter from the
application/soap+xml media type).

However, one cannot omit the action parameter in the media type if the
binding supports the SOAP Action Feature (which the SOAP 1.2 HTTP
binding does), as the spec is very clear about that:

  If the http://www.w3.org/2003/05/soap/features/action/Action
  property has a value at a SOAP sender utilizing a binding supporting
  this feature, the sender MUST use the property value as the value of
  the action parameter in the media type designator.

Cheers,

Hugo

  1. http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#ActionFeature
-- 
Hugo Haas - W3C
mailto:hugo@w3.org - http://www.w3.org/People/Hugo/

Received on Thursday, 17 February 2005 11:14:34 UTC