Remote procedure call
From Free net encyclopedia
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.
Contents |
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
Web services were another attempt to standardize RPC between platforms by piggybacking on the near-universally deployed HTTP protocol. Using Web services a .NET client running on a Windows client can call a remote procedure implemented in Java on a Unix server (and vice versa).
Web services use XML as the IDL, and HTTP as the network protocol. The advantage of this system is simplicity and standardization; both XML and HTTP are widely implemented standards.
- An example of such an RPC system is SOAP, developed in turn from XML-RPC. However, web services have been criticized as wasteful in terms of bandwidth and processing requirements.
- An example of a modern RPC system that attempts to avoid both the complexity of CORBA and the inefficiency of web services is ZeroC's Internet Communications Engine (ICE).
- An alternative approach to RPC is Representational State Transfer (REST). REST is far less well known in the IT community, but it is used where RPC can't or won't fit.
See also
- This article was originally based on material from the Free On-line Dictionary of Computing, which is licensed under the GFDL.
de:Remote Procedure Call es:RPC eo:RPC fr:Remote procedure call it:Chiamata di procedura remota nl:Remote procedure call ja:RPC pl:Remote Procedure Call pt:Chamada de procedimento remoto