Re: Two logical WSDL documents describing the same service

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

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

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

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

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.

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.

I can see no good excuse for advocating the WSDL 2+3 kludge.  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.

Amy!

Received on Thursday, 8 January 2004 12:48:32 UTC