Chris's Rants

Tuesday, February 01, 2005


Someone posted a comment to my none of the above post that I think is worth calling out:
I think all this MEST stuff is simply giving a name (and a bad one at that) to a well known pattern that's been used in loosely coupled environments for years. It predates SOA by at least a decade. The rule is that everything's message-based. I don't need to think in terms of ProcessMessage. If I want a paradigm to associate with this then I think the pub-sub one is better: my message consumers subscribe to the network and my message producers publish to the network. I've used that approach many times before (and heard it used by others too) and most people don't have a difficult time understanding it.
Amen to that!

IMO, the semantics of messages in pub/sub aren't ProcessMessage, they are (or should be) more along the lines of SomethingInterestingHappened. Note the past tense. I think that is the key to achieving a loosely coupled enterprise.

Instead of CreatePurchaseOrder, you would have PurchaseOrderCreated. This important semantic difference opens up a world of loose coupling that is unavailable to the imperative-based environment of remote procedure calls. Subscribers subscribe to messages (events) that interest them and act on the event upon receipt of the message in whatever way they choose. Subscribers are not told what to do, they are informed when something has happened and react according to their programming. While one subscriber might insert the purchase order into an ERP system in the form of a Sales Order, another might simply log the event. Another might update the statistics in an enterprise dashboard. The compositional possibilities are endless. Subscribers can come and go without impacting the producer/publisher. This is the true nature of loose coupling.


  • I'm a big Pub/Sub fan, but what leads to the first PurchaseOrderCreated event? Someone, somewhere, has to trigger the whole process.

    By Blogger Stefan Tilkov, at February 01, 2005 11:57 AM  

  • Chris, please see my reply.Jacek

    By Anonymous Anonymous, at February 01, 2005 12:41 PM  

  • +1 to your blog entry. Absolutely everything in distributed computing is based on message passing at one level or another, so trying to push a "new" model based on this ProcessMessage stuff is bogus IMO. It says nothing about SOA and loose coupling that couldn't be said by stating "hey, let's build our systems on the UDP sendmsg API and byte blobs". That's not an architectural principle that's going to go anywhere fast for so many reasons (I need a blog!) However, as you and Brian point out, the pub-sub model is well understood and has been used to build some pretty large scale systems over the years. Now that's a good architectural model IMO. I also don't think it needs some corny four-letter acronym to describe it: it's not new and shouldn't be disguised as such.

    By Anonymous Anonymous, at February 01, 2005 6:31 PM  

Post a Comment

<< Home