Making Loose Coupling Real: The Need for Interoperable Queued Messaging
Saturday, February 25, 2006
Assertions that web services are loosely coupled have always rung hollow to me. Everyone seems to have a unique view of what loose coupling means, although rigorous definitions are scarce. And the reality is that the most common use of web services today follows the traditional RPC model, which is at best only a bit more loosely coupled than DCOM or CORBA.
I'd argue that an important aspect of loose coupling--often the
most important--is the ability to communicate via queued messaging. Sadly, this isn't really possible today in an interoperable way with web services. WS-ReliableMessaging does allow reliable communication via SOAP, which is a good thing. But this spec effectively adds the functions of TCP to SOAP. It's not sufficient for creating interoperable message queuing in the style of IBM's WebSphere MQ
(formerly known as MQSeries) or Microsoft Message Queuing
I've been concerned about this for a while. (I remember complaining about it in my keynote at Software Development West almost a year ago.) To me, interoperable queued messaging is fundamentally important for the kind of environment that service-oriented architecture is aiming at. Because the standards in this area aren't sufficient, we see proprietary solutions like the use of JMS-based messaging in enterprise service buses such as Sonic ESB
. (Don't be confused here: JMS defines only a programming API, not an interoperable wire protocol.) We also get unavoidable but imperfect solutions such as the reliance of Windows Communication Foundation
on MSMQ for queued messaging.
What's needed to fix this problem? By all accounts, not much. Microsoft's Shy Cohen has recently posted a good description
of the issue from Microsoft's perspective that's definitely worth reading. I have no first-hand knowledge, but it's easy to imagine that IBM isn't too keen on creating web services standards in this area. WebSphere MQ holds a commanding share of this market, and so it would be understandable if IBM wasn't enthusiastic about creating another WS-* spec that commoditized queued messaging. Still, without interoperable queued messaging, web services-based SOAs will be limited in significant ways.
Yet big customers still hold big sway with their vendors. Especially if you work for a large user organization, please tell your vendor reps that they need to work together to solve this problem. It's fundamental to making loose coupling real.