RE: Action Item 2004-07-01 Solution to 168/R114

 

> -----Original Message-----
> From: www-ws-desc-request@w3.org 
> [mailto:www-ws-desc-request@w3.org] On Behalf Of Roberto Chinnici
> Sent: 14 July 2004 02:22
> To: Jim Webber
> Cc: www-ws-desc@w3.org
> Subject: Re: Action Item 2004-07-01 Solution to 168/R114
> 
> 
> Jim Webber wrote:
> > Roberto,
> > 
> > 
> >>Here's the issue as I see it: the WSDL author went as far as 
> >>to define several operations on an interface. Operations 
> >>partition the set of all valid message exchanges 
> >>(interactions) with a service in disjoint subsets. If one 
> >>interface can define two operations,
> >>O1 and O2, that use the same MEP and both have signature A->B 
> >>(i.e. they take an A and return a B), then the combination of 
> >>the actual messages "a" and "b" as transmitted doesn't tell 
> >>the whole story. In general, you need the "operation name" to 
> >>be transmitted. (Maybe there is some rule that says "if the 
> >>value X is > 1000 it's O1, otherwise it's O2", as Gudge 
> >>offered. But then the culprit seems to be the insufficiently 
> >>powerful type system used to define A, since it merged two 
> >>disjoint types into one:
> >>in reality, O1 and O2 have different signatures.)
> > 
> > 
> > The first thing we have to learn is that O1 and O2 don't 
> really exist.
> > Web Services don't really support operations (as you noted) just the
> > exchange of messages. 
> > 
> > Once we're past that hurdle we are down to a problem of 
> dispatch. Given
> > a message with particular structure and content, where do I 
> shove it in
> > my back end?
> > 
> > That is service-specific, and is therefore out of scope for WSDL.
> > 
> > Of course I sympathise with the fact that at the 
> application level, some
> > will want to turn this message exchange into something like:
> > 
> > interface WS
> > {
> >   X foo(Y y);
> >   W foo(Y y)
> > } // obviously wrong
> > 
> > But though familiar and comfortable, that is not a true 
> reflection of
> > what's happening, which is more like:
> > 
> > interface WS
> > {
> >   Message foo(Message);
> > }
> > 
> > Where we are left to our own devices to marry this up with our
> > application-specific needs.
> 
> Good! But then define just one operation,
> 
>   <operation name="doesitall">
>     <input element="#any"/>
>     <output element="#any"/>
>   </operation>

But that doesn't describe my service. I accept message X and emit
messages Y and Z. #any is way too loose.

> 
> and you're done. You can use types more specific than #any if you
> want, I don't mind at all. Internally, you can do what you want,
> have any number of operations, or use something else entirely,
> I'm OK with that.
> 
> But if you partition the set of possible exchanges in buckets,
> advertise that fact prominently in the WSDL and then tell to
> an innocent bystander like me "Nope, just kidding! See? There
> are no buckets, no matter how close you look!", well, that
> sounds like cheating.
> 
> Operations exist, because _you_ put them in the WSDL _you_ published.

I'm with Jim. I think operations are an illusion. All they are is a
*WSDL level* construct for grouping messages in an exchange. The fact
that when using RPC style the messages exchanges are typically In-Out
with different input and output messages for each operation does not
mean that all message exchanges look like that. 

Gudge

Received on Wednesday, 14 July 2004 03:16:17 UTC