Remote Procedure Calls suck
Here’s a good post by Steve Vinoski on why RPCs are a bad idea. I couldn’t agree more.
Ten years ago I worked on a project that used DCOM for communication between the client and the server. The amount of pain that caused was tremendous. That led me to make the same conclusion that Steve made: RPCs are fundamentally flawed because they don’t expose failure modes to the programmer directly.
However the industry marched on continued delivering these failed technologies. CORBA is still alive and kicking, and both Java and .NET provide remoting libraries.
The problem has been patched somewhat by adding asynchronous calls to these RPC libraries, but the whole idiotic idea of sending object graphs instead of plain messages over the wire is still alive and kicking.
You can also try to use various RPC technologies as a simple message passing technology by using asynchronous calls as messages with parameters being passed by value, but various little details (versioning, object lifetimes, performance, etc.) will still bite you in the ass so why bother?
