Re: Two logical WSDL documents describing the same service

Hi Amy,

I think you've misunderstood my intent, and I apologize if my earlier 
message sounded like an emotional appeal.  It was trying illustrate that if 
a system blindly accepts arbitrary WSDL documents from unknown sources, and 
doesn't expect to have to deal with the case where two logical WSDL 
documents[1] describe the same service, then, well, that system is gonna 
have problems, because those cases will occur regardless of whether we or 
anyone else says its permissible or forbidden.

I'll clarify further inline below . . . .

At 12:43 PM 1/8/2004 -0500, Amelia A Lewis wrote:

>On Jan 8, 2004, at 10:28 AM, David Booth wrote:
>>I agree that a system stupid enough to suck down random WSDL documents 
>>and be unable to function when it sees two logical WSDL documents that 
>>define the same service would have a problem, but I don't think that's a 
>>problem the WSDL language can or should address.  Any system that needs 
>>to suck down random WSDL documents should either:
>
>I do not think that the ability to handle arbitrary WSDL instances is 
>either stupid or random, and reject the emotional loading that you are 
>forcing into this argument (something *I* am *never* guilty of!  the 
>idea!).  In particular, if a client wants to retrieve the description of a 
>particular service so that it can dynamically construct messages, and if a 
>particular toolkit permits a service to be generated from a WSDL, then in 
>either case the collision of the service qname can lead to either 
>overcomplex or nonworking systems.
>
>Let's take a specific case, rather than argue abstractions.
>
>WSDL 1: invalid-combined-service
>
>interface = ns:access
>binding implements ns:access = ns:accessbinding
>service tied to ns:access, endpoint uses binding ns:accessbinding = ns:service
>
>interface = ns:mgt
>binding implements ns:mgt = ns:mgtbinding
>service tied to ns:mgtbinding, endpoint uses binding ns:mgtbinding = 
>ns:service

Ok, so WSDL 1 is invalid in the WSDL2.0 language because it tries to define 
the same service using two different interfaces, and the WSDL2.0 spec 
permits only one interface per service.

>WSDL 2 & 3: valid-because-we-wanna-be-language-lawyers-and-not-fix-our-mess
>
>WSDL 2: access-service
>interface = ns:access
>binding implements ns:access = ns:accessbinding
>service tied to ns:access, endpoint uses binding ns:accessbinding = ns:service

Ok, WSDL 2 is valid in the WSDL2.0 language.

>WSDL 3:mgt-service
>interface = ns:mgt
>binding implements ns:mgt = ns:mgtbinding
>service tied to ns:mgtbinding, endpoint uses binding ns:mgtbinding = 
>ns:service

Ok, WSDL 3 is valid in the WSDL2.0 language.

>WSDL 4: valid-by-the-single-interface-per-service-restriction
>
>interface = ns:access
>binding implements ns:access = ns:accessbinding
>service tied to ns:access, endpoint uses binding ns:accessbinding = 
>ns:accessservice
>
>interface = ns:mgt
>binding implements ns:mgt = ns:mgtbinding
>service tied to ns:mgtbinding, endpoint uses binding ns:mgtbinding = 
>ns:mgtservice

Ok, WSDL 4 is valid in the WSDL2.0 language, because the ns:mgtservice is a 
different service from the ns:accessservice.

>The intent of this entire proposal is to allow a single conceptual service 
>to have a single qualified name describing it, by encouraging authors to 
>work around the single interface per service restriction.

No, that isn't my intent: (1) I'm not advocating allowing the combination 
of WSDL 2 and WSDL 3 in the WSDL2.0 language; and (2) I'm not advocating 
*encouraging* anything.  I'm saying we have no business saying anything for 
or against it, because it isn't a part of the WSDL2.0 language.

>At least, that's how I've read it.  If the intention of the proposal is to 
>permit WSDL 4, rather than the [loaded, emotional adjectives warning] 
>stupid language-lawyering of WSDL 2+3 that bypass the validity problems of 
>WSDL 1, then I'm completely out of line.  But WSDL 4 is permissible (we've 
>been planning on doing that one ever since we lost the single interface 
>argument).  There's no way of indicating, in WSDL, that accessservice and 
>mgtservice are related, but that can be resolved with extensions or 
>out-of-band data.

Yes.  WSDL 4 is already valid in the WSDL2.0 language, and extensions or 
some other language would be needed to express a relationship between 
accessservice and mgtservice.

>I can see no good excuse for advocating the WSDL 2+3 kludge.

I'm not advocating the WSDL 2+3 kludge.  The WSDL 2+3 kludge would have to 
be written in some *other* language, because WSDL2.0 does not permit 
it.  If some other language chooses to allow WSDL 2+3, that's up to that 
language.  I don't think we should try to say what it should mean.

>It seems to me that if some other group is looking for workarounds to the 
>single-interface-per-service restriction *already*, then we need to think 
>about it.  Again.  We certainly should *not* recommend a strategy that 
>increases confusion and makes coding more complex.

I am not advocating that we *recommend* any strategy at all.  I am saying 
we should be neutral.  However, since the question is likely to arise, I 
think it should be addressed in the primer (as we discussed on yesterday's 
teleconference), and I've added a placeholder for this purpose.   I think 
the primer should acknowledge that *outside* the WSDL2.0 language, some 
*other* language or system may accept the combination of WSDL 2+3, and if 
it does, the meaning of that combination is up to that language or system.

Does that help clarify what I meant?


-- 
David Booth
W3C Fellow / Hewlett-Packard
Telephone: +1.617.253.1273

Received on Friday, 9 January 2004 12:12:08 UTC