- 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