Jim Webber and Savas Parastatidas wrote a nice article about why WSDL is not IDL. It's been interesting to watch the fall-out from that, such as Jim Webber's followup. Stefan Tilkov echoes my complaint about Schema 1.0 limitations, though WSDL isn't bound to Schema 1.0.
I think there are 2 separate points that can be articulated: what the IDL describes and what the IDL can express.
WSDL does not constrain the WSDL interface description and the implementation of the described interface. WSDL and distributed object IDLs are all IDLs, that is Interface Definition Languages. However, the key difference is that they describe the interface to different things. In dist-obj, IDL describes an interface to an object. That's the point, distributed objects. All the operations in a given interface are to the same object.
In Web services, WSDL describes an interface to a Service. What's a Service? That's the beauty: By leaving undefined what exactly the interface is for, web services achieves looser coupling than distributed objects. In particular, the coupling between the interface and the component(s) that implement the interface is relaxed for Web services (and I guess SOA). The important point is that WSDL relaxes the contract between the interface and the "service" implementation. One could argue that a definition of "SOA" is those architectures that loosely couple the component implementation to the interface, which WSDL does a good job of.
This relaxing of the coupling between the interface and the component naturally bleeds into the client view of the component, though not nearly as much as one might think. Given a stateless distributed object IDL and comparing it to a WSDL, there's little difference in the clients coupling to the interface.
I think there's a big win in WSDL not describing exactly what it is an interface for. Arguably, that's a big part of the "Web" part of Web services, where resources on the Web can only be reasoned about based upon the data they send back and the "resource" is completely opaque and unknown. To paraphrase, "there is no service neo".
Given that WSDL interface say nothing about the implementation of the interface and only the contract for what the interface can exchange, this leads to the second point on interfaces. I believe that WSDL's use of Schema - yes, I know WSDL allows other schema languages, but let's deal with current reality of 99.9% of implementations and deployments - for the most part keeps us locked into the tightly coupled client to interface model. I wrote about this a while ago in Web services = or != Distributed Objects. The difficulty in expressing the Web's level of extensibility and versioning in Schema often keeps us building applications that tightly couple the client to the interface and prevent interface changes.
There are some interesting possibilities in WSDL 2.0 that we've started to explore about relaxing some of the constraints that Schema imposes, but that work is early on. Those of you going to XML Europe should go to Henry Thompson's talk about 2 pass Schema validation to relax extensibility constraints, listed as a late breaking session
In summary, interfaces can be used to reduce coupling between systems in two regards: the coupling between the client and the interface, and the coupling between the interface and the implementation. WSDL helps us a lot with the 2nd and somewhat with the first but it's also limited by Schema.
Saying things like "WSDL isn't an IDL" doesn't really help with the primary differentiation that I'm making. A more appropriate expression would be "WSDL isn't an object IDL", and even better "IDLs that do not constrain the IDL implementation provide for more loosely coupled systems".
Don Box has been talking about relaxing the constraints of things the clients must know about the implementation to facilitate interoperability, and the relaxing of the component/interface implementation is one very signficant example of that.</blatant DB troll for a blog posting>
Regardless of what the interface describes and can express, there's always implementation realities. We, the vendors, haven't provided as consistent an experience for using XML Schema within WSDL and our programming languages as we'd all like. I think that's something that will gradually improve over time, but we probably could have made it easier by having a smaller Schema language.
Speaking of schema languages, I've also been doing some looking into RDF and OWL for modelling extensible components, and I'll be posting results of my investigations soon..
I think I said a similar thing in my entry, in other words and with a different emphasis, I guess. 8-)