Partager via


Why most of what I read about service-oriented architecture annoys me - Part 9

And, finally, here is what really, really, really, really annoys me in what I hear presumable gurus say about service-oriented architecture: for no good reason that I can fathom almost everyone that I have heard speaking on the topic wants to bring systems built around message-queues under the umbrella of what it means for a solution to be "service-oriented." I find that notion to be as moronic as it is unfortunately ubiquitous. 

 

Let's go back to the first principle of what a service is: it is a software entity that exposes a contract that defines everything a client needs to know in order to communicate with the service, including, but not limited to, the messages that the service will accept as input and return as output. That definition should not be in the least bit contentious. 

 

Web services are the paradigm example of services because they expose a contract for communicating with them via WSDL. Yes, WSDL is currently somewhat limited in that it currently cannot accommodate policies, so we can't say, in WSDL, to which requests our service will respond. Yet, one can readily see how WSDL might be extended to permit that, and we can expect that it will be extended in that way soon enough. 

 

However, there is nothing remotely akin to WSDL in message-queuing solutions. Message queues do not expose any information about the kinds of messages they are meant to receive. Therefore, message queues are not services by anyone's customary and useful definition of what a service is.  

 

So, can everyone take those slides out of their decks, please. Thank you.

Comments

  • Anonymous
    November 13, 2004
    Folks, don't ditch those slides just yet. McMurtry has made a very common logical error in the discussion of services. One must carefully distinguish between the different ways of answering this question (What is a service?). McMurtry correctly points out that a message queue is not a service. Similarly, wheat is not bread. However, one can certainly make bread from wheat. The wheat is generally processed into flour and a few other ingredients are required. Of course, wheat's not the only grain that can be used to make bread, but it has several qualities that make it an excellent choice.

    Likewise, one can certainly construct a service using message queues as an ingredient. Message queues are key ingredients in building services because they provide excellent support for autonomy, a fundamental quality of services. Yes, other ingredients are needed to provide the other qualities services need.

    Even if you like corn bread, don't call me a moron because I prefer wheat bread.