Remote procedure call (RPC) is a protocol that allows a computer program running on one computer to cause a subroutine on another computer to be executed without the programmer explicitly coding the details for this interaction. When the software in question is written using object-oriented principles, RPC may be referred to as remote invocation or remote method invocation.
History and origins
The idea of RPC goes back at least as far as 1976, when it was described in RFC 707. One of the first business uses of RPC was by
Xerox under the name "Courier" in 1981. The first popular implementation of RPC on
Unix was Sun's RPC (sometimes called
ONC RPC), which was used as the basis for
NFS. Another early Unix implementation was the RPC mechanism in
Apollo Computer's Network Computing System (NCS), which after
HP's acquisition of Apollo later surfaced as
DCE/RPC in the
OSF's
Distributed Computing Environment (DCE). A decade later
Microsoft adopted DCE/RPC as the basis of their Microsoft RPC (
MSRPC) mechanism, and implemented
DCOM (and
ActiveX) atop it. Around the same time (mid-90's),
Xerox PARC's
ILU, and the Object Management Group's
CORBA, offered a similar but platform-neutral paradigm, also based on distributed objects with an inheritance mechanism.
Message passing
RPC is an easy and popular paradigm for implementing the
client-server model of
distributed computing. An RPC is initiated by the caller (client) sending a request message to a remote system (the server) to execute a certain procedure using arguments supplied. A result message is returned to the caller. There are many variations and subtleties in various implementations, resulting in a variety of different (incompatible) RPC protocols.
Standard contact mechanisms
In order to allow servers to be accessed by differing clients, a number of standardized RPC systems have been created. Most of these use an
interface description language (IDL) to allow various platforms to call the RPC.
RPC analogues found elsewhere
- Java's Java Remote Method Invocation (Java RMI) API attempts to provide similar functionality to standard UNIX RPC methods.
- Microsoft .NET Remoting offers low-level RPC facilities for distributed systems implemented on the Windows platform.
Web services RPC
See also
Operating system technology | Distributed computing | Middleware
RPC | Remote Procedure Call | RPC | RPC | Remote procedure call | Chiamata di procedura remota | Remote procedure call | RPC | Remote Procedure Call | Chamada de procedimento remoto