- From: Savas Parastatidis <Savas.Parastatidis@newcastle.ac.uk>
- Date: Sun, 7 Nov 2004 17:15:52 -0000
- To: "Francisco Curbera" <curbera@us.ibm.com>
- Cc: <public-ws-addressing@w3.org>
Dear Paco, > > The semantics of WSA:Action are already defined in the current spec. The > acceptable values are defined by each service contract.l We have several > specifications already using it and several vendors interoperating on that > basis. I don't get exactly what is undefined about that. I am sorry I didn't explain clearly what I meant. Let me try again. The specification says... <quote> An identifier that uniquely (and opaquely) identifies the semantics implied by this message. It is RECOMMENDED that value of the [action] property is a URI identifying an input, output, or fault message within a WSDL port type. An action may be explicitly or implicitly associated with the corresponding WSDL definition. Section 3.3 below describes the mechanisms of association. Finally, if in addition to the [action] property, a SOAP Action URI is encoded in a request, the URI of the SOAP Action MUST be the same as the one specified by the [action] property. </quote> This suggests that the value of the wsa:action information header indicates the semantics of the message. In a document-centric interaction, it is very likely that the semantics of a message are content- or application protocol-based and not known by just looking at the message. I personally (and I know others too) treat WSDL as a way to describe message format/structure. The "operation" is just an interaction while the "portType/interface" is a collection of interactions. We can't infer any kind of semantics from a WSDL document; we need additional information to do that (e.g. RDF, a specification document, etc.). So, what are the semantics of the following message? (wsa:action automatically generated from the WSDL document) <soap:Envelope> <soap:Header> <wsa:action>http://example.com/PortType/BusinessDocument<wsa:action> </soap:Header> <soap:Body> <myappl:MyComplicatedBusinessDocument> ... </myappl:MyComplicatedBusinessDocument> </soap:Body> </soap:Envelope> As part of a larger set of message exchanges, this message may mean different things to the recipient, based on its actual contents. So, what does it mean to have the wsa:action header in this case? Also, what does it mean for the message if the value of the wsa:action header in the above case was http://example.com/hello while the contents were the same? What are the semantics of processing the wsa:action header? The wsa:To, wsa:ReplyTo, etc. headers are clearly defined and we know what they mean. It seems to me, however, that the meaning of wsa:action is deferred to other specifications and there is a danger, as others have suggested, that wsa:action would be just used to expose the internal-to-the-service message dispatching mechanism because it'd be a convenient thing to do. So, since the semantics of the wsa:action values are deferred to other specifications, why aren't those specifications define their own header for doing so? E.g. <soap:Envelope> <soap:Header> <ws-mex:GetMetadata /> </soap:Header> <soap:Body /> </soap:Envelope> And <soap:Envelope> <soap:Header> <ws-transfer:Create /> </soap:Header> <soap:Body /> </soap:Envelope> And you could also do <soap:Envelope> <soap:Header> <!-- two birds with one stone --> <ws-trasnfer:Create /> <ws-mex:GetMetadata /> </soap:Header> <soap:Body /> </soap:Envelope> (DISCLAIMER: I prefer those elements to be in the body, but I presented them like that as alternative examples of how specification-specific message semantics in the header) Regards, .savas.
Received on Sunday, 7 November 2004 17:16:08 UTC