Remote Procedure Calls (RPC)

RPC has been around for many years. However, it has never had so much interest as it does now. This is primarily due to popularity of XML and the initiatives in progress that are using XML to create the next generation of networked/Internet applications. A few of these examples are SOAP and XML-RPC.

While the RPC concept and implementations of it are getting a lot of press for its abilities to solve a lot of new and existing problems, there is a growing group of people who are questioning many aspects of RPC. One such instance was a recent set of discussions on the xml-dev list about how REST, HTTP, and RPC related to one another. The one thing that seems common among these conversations is that no one can agree these relationships. Some say that REST is based on HTTP, while others state the opposite. Some say that REST and RPC have nothing to do with one another while others feel that they are two sides of the same coin. And, if that was not enough, no one can decide whether RPC should be used inside of HTTP from a REST point of view, from the security point of view, etc.

In the end, it comes down to this: there are RPC implementations out there right now. People are using them (or at least trying to) in real-world applications right now. The implementations may not be ideal, but how long can one sit around and wait for the "ideal" implementation to come along? As a result, people are making due with what is available and hoping that there will be something better to use in the future when it is needed.

Gotta Start Somewhere

To that end, I have decide to start writing down some of my own thoughts on RPC. Hopefully, it will help myself and others to eventually arrive at an RPC implementation that will be simple and powerful.

GTP : Generic Transfer Protocol

Summary: I believe that if we are to create an entirely new mechanism for performing RPC, it should not be piggybacked on an existing mechanism that was not designed for RPC in the first place. This means that using HTTP as the foundation protocol is out of the question. Instead, I suggest a new transfer protocol simply called GTP. It is a protocol that is specifically designed to be used as the foundation for RPC.