- From: David Booth <dbooth@w3.org>
- Date: Fri, 11 Jun 2004 17:50:16 -0400
- To: www-ws-desc@w3.org
- Cc: Hugo Haas <hugo@w3.org>, Glen Daniels <gdaniels@sonicsoftware.com>, Ugo Corda <UCorda@SeeBeyond.com>
Regarding the discussion about the meaning of an optional feature, I think
this issue is actually already addressed on our draft, and I think the
draft has it right, though it's possible we should add more clarification.
Section 8.3
http://dev.w3.org/cvsweb/~checkout~/2002/ws/desc/wsdl20/wsdl20.html#processor
says "A conformant WSDL processor MAY safely ignore a NON-mandatory
extension that it does not recognize or that it does not choose to
implement." (and also clarifies that the conformant processor is acting on
behalf of the requester entity -- not the provider entity).
This means that if a WSD declares a feature to be optional (i.e., it
declares the feature but does not set wsdl:required=true), then a provider
agent implementing that WSD MUST NOT send a message that requires the
requester agent to support that feature, UNLESS the provider agent has some
other information -- beyond what is stated in the WSD -- that assures the
provider agent that the requester agent actually supports that
feature. For example, in a request-response interaction, the requester
agent might provide such information by sending a message that includes a
flag indicating "by the way, I support feature X, so you may use that
feature when you send back your response".
This is NOT a symmetric interpretation of "optional", for a very good
reason: The WSD identifies (and applies to) the particular provider agent
identified by the endpoint declaration. But it does not identify the
requester agent. It applies to *any* hypothetical requester agent that
engages the provider agent under this WSD. The WSD permits the provider
agent to declare its own support for a feature (which any requester agent
may therefore use), but there is no way in the WSD to declare what any
particular requester agent ACTUALLY supports. It is only possible to
declare a requirement of what the (hypothetical) requester MUST support.
>From: Hugo Haas <hugo@w3.org>
>Date: Mon, 7 Jun 2004 16:15:55 +0200
>. . .
>When the use of the MTOM feature is not required, it just means that
>the service supports it, which means that the requester agent or the
>provider agent may use it, depending on the direction of the message
>. . . .
Careful. As explained above, unless the provider agent has other
information to know that the requester agent actually supports the feature,
then the provider agent should not send the requester agent a message that
requires use of the feature.
>From: Glen Daniels <gdaniels@sonicsoftware.com>
>Date: Mon, 7 Jun 2004 11:49:19 -0400
>
>. . . Second, we could add something like a "mustUnderstand" attribute to
>feature/module declarations, which indicates that anyone using the WSDL
>must understand the given extension, but that the usage of that
>extension is still optional unless "required='true'" is specified. . . .
It sounds like you're suggesting a way to distinguish between requiring the
requester agent *accept* messages that use a particular feature, versus
requiring the requester agent to *send* messages using a particular feature.
I don't think we need to add anything to WSDL to gain this ability, since
it could be done by splitting feature X into two features, X-input and
X-output --- one pertaining to service input and the other to service output:
feature X-input means that feature X is used on service input
feature X-output means that feature X is used on service output
So on combining these two features with the two possible values of
wsdl:required, we get four cases:
1. Declaring feature X-input with wsdl:required=false means that the
requester agent MAY send messages using feature X, and the provider agent
will understand them.
2. Declaring feature X-input with wsdl:required=true means that the
requester agent MUST send messages using feature X, and the provider agent
will understand them.
3. Declaring feature X-output with wsdl:required=false means that the
provider agent has the ABILITY to send messages using, but should not do so
without other information to know that the requester agent can accept them.
4. Declaring feature X-output with wsdl:required=true means that the
provider agent MUST be prepared to receive messages using feature X.
--
David Booth
W3C Fellow / Hewlett-Packard
Telephone: +1.617.253.1273
Received on Friday, 11 June 2004 17:50:38 UTC