James Robertson writes

Microsoft wants to move beyond objects:

Box said technologies such as Java's Remote Method Invocation (RMI) and CORBA (Common Object Request Broker Architecture) all suffered similar problems. "The metaphor of objects as a primary distribution media is flawed. CORBA started out with wonderful intentions, but by the time they were done, they fell into the same object pit as COM."

The problem with most distributed object technologies, Box said, is that programs require particular class files or .jar files (referring to Java), or .dll files (Microsoft's own dynamic linked libraries). "We didn't have (a) true arms-length relationship between programs," Box said. "We were putting on an appearance that we did, but the programs had far more intimacy with each other than anyone felt comfortable with."

"How do we discourage unwanted intimacy?" he asked. "The metaphor we're going to use for integrating programs (on Indigo) is service orientation. I can only interact by sending and receiving messages. Message-based (communications) gives more flexibility

I guess Don didn't get the memo - OO is all about the messages between the objects, and less about the actual objects themselves. Look at that last sentence - "Message based communications" gives more flexibility? What does he think a OO is about? You know, CORBA can be simple - in VisualWorks, it's amazingly, astoundingly simple. It takes a curly brace language like Java or C# to make it complex (at the developer level - I'm not talking implementation layer here).

James Robertson completely misses the point of Don's comments on distributed computing with objects versus using message passing. An example of a service oriented architecture that uses message passing is HTTP on the World Wide Web. It is flexible, scalable and loosely coupled. No one can say with a straight face that using CORBA, Java RMI or DCOM is as scalable or as loosely coupled unless they're trying to sell you something. What Don and the folks on the Indigo team are trying to do is apply the lessons learned from the Web solving problems traditionally tackled by distributed object systems.

It is just an unfortunate naming collision that some object oriented languages use the term “message passing” to describe invoking methods on objects which I'm sure is what's confused James Robertson given that he is a Smalltalk fan.


Wednesday, January 28, 2004 8:23:07 PM (GMT Standard Time, UTC+00:00)
> unless they're trying to sell you something

Of course, to be candid, you and Don are trying to sell us SOA and message passing over HTTP on the web :-)
Thursday, January 29, 2004 2:40:00 AM (GMT Standard Time, UTC+00:00)
Is Robertson missing the point? "Message passing" does not map exclusively to method invocation. For instance, in C# or Java, an object can't pass on messages that it doesn't understand.

I don't know Smalltalk, but I imagine it has a facility similar to Distributed Objects in Objective-C.


How does Indigo differ from this technology, aside from the format of the message? What would be an example of Indigo outclassing Cocoa Distributed Objects?
Thursday, January 29, 2004 5:56:33 AM (GMT Standard Time, UTC+00:00)
Sales or not, I found this to be helpful on getting some traction on these issues. Thanks!
Wednesday, February 4, 2004 11:10:36 PM (GMT Standard Time, UTC+00:00)
SOA seems to me to be more about refactoring existing external interfaces for a distributed application into a more "message-based" approach, where the message is a loosely-coupled class of its own. From a purist OO approach, method invocation + arguments = message. Doesn't say how to find the method's entry point. Doesn't say how to pass the arguments. So, if we decouple the definition of the messages from the way that our OO-oriented (can I say that?) tools would have us define the possible methods and parameters (or interfaces), then we have SOA. No?
Comments are closed.