Hacker News new | past | comments | ask | show | jobs | submit login

If "message passing between objects" is so great, then why do those distributed object frameworks (CORBA,(D)COM) not rule the world? Bad execution?



CORBA/DCOM/SOAP-RPC are examples of RPC-based services, i.e. exactly what Alan is advocating against.

Here's my definition of a message-based service: https://github.com/ServiceStack/ServiceStack/wiki/What-is-a-...

Here are some of the advantages: https://github.com/ServiceStack/ServiceStack/wiki/Advantages...

Here is the difference between WCF RPC methods and a message-based ServiceStack service: http://www.servicestack.net/files/slide-35.png (i.e. 6 RPC methods vs 1 Msg service)

Here is the difference between WebApi RPC methods vs an equivalent message-based ServiceStack service: http://www.servicestack.net/files/slide-34.png (e.g. 5 RPC vs 2 msg ones)


Those aren't exactly what Kay has in mind. And as a matter of fact, message passing between objects does rule the world in the form of the internet. In CORBA and other RPC mechanisms, both sides have some kind of description of the protocol from which they generate methods. If the interface changes, then the code must be regenerated on both sides. On the other hand, Kay believes in individual nodes having full freedom to handle any kind of message and decide what they do with it, not necessarily strictly conforming to a decided-on protocol.

It's analogous to the idea of objects adopted by C++ and SmallTalk. With C++, method calls are essentially procedure calls with a specific signature that are dispatched based on a special parameter (i.e. this). It makes no sense to invoke a method that doesn't exist. In SmallTalk, you can send any message you'd like to an object, and the object can choose to deal with it in any way it wants, up to and including catch-all code for dealing with any kind of message.

CORBA and its ilk work with a protocol, and messages not conforming to the protocol are nonsensical. Computers on the internet can send any message to any computer, and each can deal with the messages in any way it wants. The internet is a network of message-passing objects.


Those are pretty much RPC (remote procedure call), which Kay names as the opposite of message passing. My take on what Kay is saying is that he is in favor of something much more like "service oriented architecture" -- but certainly without all the buttloads of cruft that have come to be associated with that phrase.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: