As defined by Wikipedia:
In computer science, a remote procedure call (RPC) is an Inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding the details for this remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. When the software in question uses object-oriented principles, RPC is called remote invocation or remote method invocation.
I’ve recently worked on creating a controller class for Pylons that implements a form of RPC called JSON-RPC. It uses JSON (as you may have already determined) as the serialization format for initiating RPCs. And it turns out, this is really useful for web applications.
On the server-side I can write my controllers as services providing methods to a client application. This frees up my code from managing routing, headers, and serialization. All of those low-level details are handled by the JSONRPCController. I simply write normal-looking Python methods that are scarcely aware that they are serving a web-application at all.
As we port more and more of our desktop experience to the web, this will be the way to go for developers.