World Wide Webber


My Books
REST in Practice: Hypermedia and Systems Architecture
Amazon:
US, UK
Developing Enterprise Web Services by Sandeep Chatterjee and Jim Webber
Amazon:
US, UK,
Also available: Korean Edition

My Bookshelf
RESTful Web Services Cookbook by Subbu Allamaraju
Programming Clojure by Stuart Halloway
RESTful Web Services by Leonard Richardson and Sam Ruby
Messages != Flattened Objects
Posted: 04 March 2004 @ 11:45 UT from Sydney, Australia
Last updated: 16 April 2004 @ 12:06 UT

In my day job I often talk with other people in the HPC and distributed systems field. I am often dismayed to hear people's views on SOA and how it is "just like OO." One thing I notice keeps cropping up in these discussion is the notion of what a message transferred between services actually is.

One school of thought is that it is a flattened object from an application, which is wrapped up in SOAP, adorned with appropriate QoS headers, and sent. The same happens in reverse at the receiving end.

At the wire level, this seems OK since we've put the application payload into the SOAP body, and the QoS information into SOAP header blocks. Therefore, the thinking is that what differentiates a service-oriented system from an object-oriented system is that services pass-by-value, whereas objects pass-by-reference. It is a comfortable picture because it "helps" people to think that in terms of the familiar method call paradigm.

I thoroughly dislike this school of thought since it undermines both service- and object-oriented systems. In (distributed) OO systems both pass-by-reference and pass-by-value can be supported. On the other hand, in service-oriented systems the messages exchanged between services need have no resemblance to any objects from which the service is built. It is likely that a message may be constructed from data from a number of different objects, processes, or systems at the service's back end. In short, the only mode of communication in service-oriented systems is "pass-by-message." :-)

So at the application level, don't think of messages as a container for serialising objects into, think of messages as first-class application-level entities themselves. Write your Web Services to use messages as the fundamental abstraction and this in turn helps to promote loose-coupling.

At this point in my rant, I remember that Savas and I wrote something on this for Web Services Journal.

Today's Web Services super-hero: SOAP Messages
(the above idea shamelessly borrowed from Don's blog)

Author Name:
Email:
Author URL:
Comment:
Antispam:
Please type the following string (note that if the strings don't match, your comment will be lost... sorry!): 'XSPLU'.
 
Recent entries

Recent comments

Feeds:
RSS 2.0 Atom