- From: David Booth <dbooth@w3.org>
- Date: Wed, 30 Jun 2004 14:18:37 -0400
- To: www-ws-desc@w3.org
This message contains a fairly detailed analysis of issue 168 / requirement
R114.
NARROWLY ADDRESSING ISSUE 168
Regarding issue 168 ("Which operation?"):
http://dev.w3.org/cvsweb/%7Echeckout%7E/2002/ws/desc/issues/wsd-issues.html#x168
I think the narrow issue raised by Mark Baker can be addressed by adding
some clarification to our spec, to be clear whether/how the operation name
is determinable without application-specific knowledge.
THE ICEBERG BENEATH THE SURFACE
However, lurking under the surface is a much larger dilemma: Every proposal
thus far to satisfy requirement R114 has been rejected by the WG, but we
still have the requirement. Requirement R114,
http://www.w3.org/TR/ws-desc-reqs/ , states:
[[
R114
The description language MUST allow unambiguously mapping any
on-the-wire Message to an Operation. (From WG discussion. Last revised 4
Apr 2002.)
]]
We've had two proposals that would have met this requirement. The first
proposal
( http://lists.w3.org/Archives/Public/www-ws-desc/2003Oct/0112.html )
was to require global element names to be unique (this was the "uniqueness
on the wire" discussion), so that the operation name could be inferred from
the global element names. The proposal was rejected by the WG:
http://lists.w3.org/Archives/Public/www-ws-desc/2003Nov/0059.html
[[
Strawpoll 1. adopting the GED proposal from Umit/Roberto
for: 5, oppose 11
]]
However, at the same time the WG also re-affirmed the need for the
requirement:
[[
JeffM: How many think the requirement should be addressed some way?
strawpoll 2. each wsdl must have a required feature associated with
dispatching
for 3, against 13
strawpoll 3. enable people to indicate so in normative way
for 13, against 3
]]
And the WG gave Umit and Glen an action for a new proposal:
[[
ACTION: Umit (with help of Glen) will write up a proposal for normative
dispatching feature.
]]
The second proposal used Features and Properties to provide a normative way
to indicate how the operation name could be determined:
http://lists.w3.org/Archives/Public/www-ws-desc/2004Jan/0082.html
After much discussion in the WG, this proposal was also rejected in a
formal vote (6 against, 4 in favor):
http://lists.w3.org/Archives/Public/www-ws-desc/2004Mar/0039.html
VIEWPOINTS TOWARD REQUIREMENT R114
Polarizing viewpoints on requirement R114 seem to range from:
>"We don't need R114. It's the application's problem to dispatch how it
>sees fit -- perhaps using an operation name, perhaps using something
>else. If someone writes an ambiguous WSD and they don't know how to
>dispatch with it, it's their problem. We shouldn't try to prevent them
>from shooting themselves in the foot."
to:
>"R114 is important. Without it we won't have interoperability."
Why has this been such a difficult issue?
THE ROOT OF THIS DILEMMA
Part of the difficulty is that industry makes a fairly clear distinction
between WSDL toolkits and WS applications, but the WSDL specification does
not make such a clear distinction between them. (The WSDL specification
has only limited mention of a conformant WSDL processor.) There has been a
strong implicit assumption that WSDL documents are targeted at WSDL
toolkits, which should be able to do a number of things based only on a
given WSDL document, without knowledge of the particular application
semantics. Conversely, there's been a strong leaning toward having the
application-specific portions of a requester or provider agent should ONLY
have to deal with tasks that are application specific, i.e., the
application code should NOT have to deal with things like transport
encodings, protocols, etc. (I realize that last statement is technically a
tautology, but hopefully you get the drift.)
These assumptions are rooted in the desire for a clean separation of
concerns (or layering) between the application semantics and the mechanics
of how the application interacts with others. Indeed, these assumptions
are at the basis for the existence of WSDL itself: One of the main
motivations for WSDL to exist is to ease the task of creating interoperable
requester and provider agents, i.e., to permit generic tools to generate
the portions of the agent code that handle the mechanics of the interaction
-- the protocols, the transport encodings, etc.
I think this distinction between toolkit concerns and application concerns
is at the heart of our difficulty in coming to agreement on a solution for
requirement R114, because the implicit motivation behind R114 seems to be a
desire to enable a WSDL toolkit -- not application-specific code -- to
perform dispatching based on the operation name.
The potential problem can be illustrated with a hypothetical scenario.
SCENARIO X
A provider entity wishes to make a Web service available. It uses toolkit
T1 from vendor V1 to create and test both a provider agent PA and a WSD W
that describes its interfaces, protocols, location, etc. Toolkit T1 hides
the details and grunt work of creating both the WSD W and much of the
provider agent PA. Toolkit T1 assumes that the operation name will be
transmitted using a particular convention C, although this fact is not
formally expressed in the WSDL document, i.e., WSD w contains neither a
required Feature nor a required XML extension to formally signal the use of
convention C to a WSDL processor. (Indeed, although convention C is not
required by the WSDL specification, vendor V1 believes that their toolkit
T1 offers greater value over competing toolkits, because it removes the
burden that the provider entity would otherwise have to implement their own
dispatch mechanism in application code.) The provider entity completes the
application-specific portions of provider agent PA, and carefully notes all
application semantics of the application code that has been added. The
application semantics are documented in a human-readable document S that is
also made available to potential requester entities, along with WSD W. The
semantics document S also does not mention the fact that provider agent PA
expects the operation name to be transmitted using convention C, because
the provider entity is unaware of this fact: the provider entity did not
add *any* application code to implement convention C. Provider agent PA
goes live and awaits interaction from requester agents.
Requester entity RE1 then builds a requester agent RA1 using WSD W and
semantics document S that were supplied by the provider entity for this
purpose. RA1 happens to use the same toolkit T1 as was used by provider
agent PA, so RA1 uses convention C to send the operation name to provider
agent PA in each request. RA1 is deployed and interacts flawlessly with PA.
Another requester entity RE2 then builds a requester agent RA2, also using
WSD W and semantics document S. However, RA2 happens to use a different
toolkit T2 from vendor V2, which does NOT use convention C to send the
operation name to provider agent PA in each request. RA2 is deployed, but
doesn't work when it tries to interact with PA. After many hours spent
checking the implementation of RA2 against WSD W and semantics document S
and finding nothing amiss, RE2 calls the provider entity to complain that
PA is not working according to WSD W and semantics document S. The
provider entity assures RE2 that provider agent PA *is* working fine and
that nobody else's requester agent has reported any problem with it. The
provider entity tells RE2: "Your toolkit must be broken. Everyone else is
using toolkit T1. Try that one."
SCENARIO X: WHO IS TO BLAME?
RE2 thinks the problem is the provider entity's fault, because RA2 conforms
to everthing that is specified in WSD W and semantics document S. The
provider entity thinks the problem is RE2's fault, because PA works fine
for other requester agents that were created using toolkit T1. Vendor V2
says the problem is vendor V1's fault, because the generated WSD W does not
mention convention C as a required extension. Vendor V1 says that
convention C is outside the scope of WSDL -- that it falls in the scope of
the application semantics, which are beyond WSDL. But the provider entity
did not mention convention C in the semantics document S because it didn't
add *any* application-specific code for convention C, and thus it didn't
know anything about convention C.
OPTIONS FOR MOVING FORWARD
I believe the scenario above illustrates the heart of this dilemma. Would
this scenario represent an acceptable reality? Or should this WG try to
prevent it? If so, how?
We are now approaching Last Call, which is the time when we announce to the
world that we believe we have met all of our requirements. We cannot
afford to delay LC, but we obviously have not yet met requirement
R114. What should we do? I see a few options.
Option 1a: Rescind requirement R114.
Option 1b: Acknowledge in our LC draft that R114 has not been met, without
formally rescinding it. At this point I don't know if there is much
difference between this option and option 1a. Either one is likely to
result in minority opinions being filed.
Option 2: Come up with a new proposal and adopt it. (But we are running
out of time to do so.)
Option 3: Reconsider an existing proposal.
--
David Booth
W3C Fellow / Hewlett-Packard
Telephone: +1.617.253.1273
Received on Wednesday, 30 June 2004 14:18:49 UTC