Message passing or distributed objects?. [Ingo Rammer's DotNetCentric]
Hm...do I currently work for a company that uses messages or distributed objects? Ask marketing and they say messages (ask them why they believe that and I get a blank stare). Ask engineering and I get a blank stare. :-) What do I believe? I believe that we are using a messaging system.
With a messaging system, I can route on subject (i.e. the SOAPAction) or I can route on content (i.e. the FQN of the body element or a particular SOAP header). Messaging to me is sending data from one location to another with anonymity. Processing it along the way (or just routing it to the next location). It is also inherently asynchronous. I fire the message into the ether and it gets processed. Maybe sometime later I get a response or maybe I never do. Messaging lends itself to the publish/subscribe paradigm as well. I can subscribe to some message store that will give me all the messages with a specific content or subject. Tuple spaces are a good example of this. In fact RogueWave has an XML Space called Ruple.
But to answer Ingo's question - "where would you draw the line between a distributed object system and message based one?" - I use messages to move data between disparate systems. For example, when I receive a packet of data from the GPRS network, I put it into a queue for someone else to process. Part of that processing may require tremendous resources. There I might use a distributed object to move that processing to one particular machine (or cluster of machines).
In closing - remember in the good ol' days of OOP programming (as told by one of my professors), no one called it "calling a method". They called it "sending a message". Allen Holub used this nomenclature all the time in his writings[1].
[1]I use the past tense here because I haven't read any of his recent works.
7:16:00 PM
|