“Why WSDL is not yet another object IDL” roundup

When Jim and I started writing the "Why WSDL is not yet another object IDL" article back in November (submitted for publication in December 2003), we had no idea of the reaction it would cause.

People with large history in distributed computing and in-depth knowledge of CORBA have criticized us for not really understanding the technologies behind CORBA and how they can be used when building distributed applications. Michi Henning left some feedback on the Web Services Journal web site to which both Jim and I replied. Steve Vinoski posted an entry to his blog too with some very good feedback. Mark Little posted comments on two of my blog entries (post 1, post 2). It goes without saying that my understanding of CORBA is not even close to what these guys know. However, I need to make it clear that we are not talking about CORBA in our article. We merely used it as an example.

On the other hand, Dave Orchard was positive about our article in this blog entry. Mark Baker wrote something related in response to one of Jim's posts.

When I write about the benefits of service-orientation and Web Services technologies and how they compare with object-oriented technologies, it's not because I dislike CORBA or object-orientation (in fact, I am using an object-oriented language and runtime for all my development work, even for the implementation of the Web Services I write). As Steve Vinoski says, the right tool should be used for the right job.

Jim and I suggest that Web Services technologies are more appropriate for the cross-organisation scenarios, for heterogeneous system integration, for large-scale deployments, for loosely-coupled deployments. We are advocating in favour of service-orientation; we are suggesting that service-orientation is better enabled through the use of Web Services technologies. Of course it is possible to write the same kind of applications with CORBA but in many cases there is great complexity in our way. Heck, we can even write the same kind of applications using sockets, Java RMI, MPI, PVM, DCE, DCOM, etc. Developers will always choose what makes their life easier and provides a better solution for the problem they are trying to solve.

I think that the CORBA crowd have misunderstood us, as I tried to explain to Mark Little in my replies to his comments. Obviously we were not clear enough in our article. We did not talk about IDLs in general but about object IDLs (it's actually part of the title). Again, as Steve Vinoski suggests in his post, in most cases a CORBA IDL is used to describe shared abstractions, the common understandings about the interface of objects that exist in a distributed system. We argue that shared abstractions are bad because they may result to tight coupling. We are not saying that CORBA is bad. We see a great opportunity with WSDL and Web Services but we also realise that in many cases WSDL is misused and is treated as yet another way to describe common abstractions that are explicitly exposed across a service's boundaries. For example, the introduction of WS-RF carries this exact danger. BTW, I am curious as to why many of the Web Services thinkers have yet to express their position in public about the possible advantages/disadvantages of building distributed applications using the resource-oriented approach that WS-RF encourages. I guess, it's all about politics.

As Jim suggests in his "The Wrong End of the Stick" post, there is no argument about whether one approach is better than the other. It's all about using the technologies for what they were meant.

Dilip Kumar was very kind to send us a link to a discussion in the comp.object.corba newsgroup where, amongst others, Michi Henning and Don Box exchanged some very interesting posts. I am still trying to parse the full thread but I am sure you'll find it interested and related to this topic. Oh... the discussion dates back in 1999.

UPDATE: More related posts... "WSDL!=IDL" by Ted Neward and "In a Swiss army knife, sometimes all you see is the knife" by Sean McGrath.

UPDATE: Corrected the spelling of Steve's last name. Sorry Steve.

2 responses to ““Why WSDL is not yet another object IDL” roundup”

  1. Shared abstractions are bad? I interpret your position as saying that *a* shared abstraction – the one where every service implicitly supports “processThis” – is good. Right? Because I agree 100%.
  2. Hey Mark, I agree that having an assumption that there is a “process incoming message” operation at each service is all one needs. However, would i call this a shared abstraction? Hmmmm… More like a common assumption. But we are playing with overloaded terms here 🙂