- From: Martin Gudgin <mgudgin@microsoft.com>
- Date: Wed, 14 Jul 2004 00:15:38 -0700
- To: "Roberto Chinnici" <Roberto.Chinnici@Sun.COM>, "Jim Webber" <Jim.Webber@newcastle.ac.uk>
- Cc: <www-ws-desc@w3.org>
> -----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