I have been struggling for quite some time now to get to the essence of
one of the biggest confusions I see in modern day enterprise application
integration practice. On one hand sits the practitioners who think in
terms of enterprise objects that talk to each other by means of messages
sent to and fro over the wire. On the other hand sits the practitioners
who think of webs of services but who also send messages to an fro over
the wire to get things done.
If it all boils down to sending messages to and fro over the wire then
surely any differences in approach must be of the
angels-on-heads-of-pins variety? The most blunt expression of this line
of thinking goes something like these "WS-* and REST[1] approaches boil
down to the same thing. The distinction is all ego-waving and posturing
and competitive dynamics at the end of the day. there is so substance to
the difference. It all boils down to messages on the wire. All else is
fluff by comparison."
This is compelling stuff. Or is it? As ever in this industry, words play
an important role in our collective misunderstandings. In this case the
culprit is the word "message". Application integrators who think in
terms of objects use the word "message" to describe one object
interacting with another. The messages going to and fro are just the
visible by-product of a design that has objects on both ends of the
wire. Objects that know how to talk to each other in intimate detail
about what needs to be done.
Application integrators who think in terms of services also use the word
"message" but in a very different way. This type of application
integrator sees functionality on both sides of the wire. The
functionality may be provided by computers, by human operators - it
makes no difference to the model. The model sees the world in terms of
messages going to and from between end-points that know what to do with
the messages. Maybe the messages will get dealt with straight away.
Maybe they will get processed next week. Maybe they will be handled by a
computer. Maybe by a human. It matters not. At the end of the day, the
important thing is the messages themselves. The messages are not merely
visible by-products of the hidden objects on either side of the wire.
Maybe there are objects hiding there. Maybe not. Who cares?
For me at any rate, this is the heart of the matter and the source of
much confusion. In the former model, messages are things slung to and
fro, synchronously in time between objects that share intimate knowledge
of each others capabilities. In the latter model, the messages are the
most important thing. There are no objects necessarily. There are no
things on the end of the wires that share intimate knowledge of each
other's capabilities. There are no synchronous connections between the
end points other than the ability to get messages into the air and onto
the landing strip in once piece. That is all.
In simple terms, the former model is centered around objects. Objects
are the real message of this integration model. In the latter model,
messages take center stage. The messages are the real message of this
interaction model.
You mileage will vary with this analogy. It helped me clear up some
confusions in my own mind. I hope it has been of some benefit to you
too.
http://bitworking.org/news/203/WS-It-s-all-your-fault