- From: Amelia A. Lewis <alewis@tibco.com>
- Date: Fri, 30 May 2003 13:13:22 -0400
- To: WS Description List <www-ws-desc@w3.org>
Okay. Single interface per service is proposed as a "simplification" (the term was used repeatedly). It's the only argument that I can recall in favor of this. I suggest that it is not a simplification. By introducing redundancy, it introduces errors. By introducing errors, without specifying how these errors are to be handled, it reduces interoperability. Example: <interface name="A" /> <interface name="B" /> <binding name="Aimpl" implements="A" /> <binding name="Bimpl" implement="B" /> <service name="aService"> <!-- first error --> <endPoint binding="Aimpl" /> <endPoint binding="Bimpl" /> <!-- one of the foregoing two lines is the second error --> </service> Legal and reasonable in WSDL 1.1, apart from the changes of element and attribute names. Illegal in WSDL 1.2. The lack of specification of the interface implemented by the service is an error. Will it be flagged? Imagine that this WSDL is created stepwise. First, interface A, binding Aimpl, and endPoint A were all created; a validation tool may have noted the lack of an interface specification on the service, but perhaps offered only a warning (or perhaps not even that) to the author. Later, additional functionality was added, using a different network paradigm that could not be adequately supported by the existing binding; a second interface, implementation, and endpoint were added. A non-WSDL-validating tool will not note the errors at all. A WSDL validating tool will note the first error, and then probably decide that endpoint Bimpl is illegal. If interface="B" is added to the service, then it will instead decide that endpoint Aimpl is illegal. The harassed and frustrated developer splits them into separate services, and removes the interface again (if there's only one endpoint in a service, you can be certain that there will be tools that do not enforce the user to declare the interface at the service level). Same harassed developer looks at @targetResource, says "Huh? WTF is that? A resource is associated with an endpoint, in any rational web-aware world, what's this weirdness?" and goes on. The WSDL works again, sort of, after all. Redundancy is *bad*. Specifying interface twice is *bad*. If it's going to happen at all, error-handling MUST be specified in sufficient detail that two processors faced with the same description report the same thing. Amy! -- Amelia A. Lewis Architect, TIBCO/Extensibility, Inc. alewis@tibco.com
Received on Friday, 30 May 2003 13:12:52 UTC