Remote procedure call

RPCremote procedure callsremotingasynchronous remote procedure callsRPC-likecomputingInterprocess Communicationremoteremote callsremote invocation
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared network), which is coded as if it were a normal (local) procedure call, without the programmer explicitly coding the details for the remote interaction.wikipedia
267 Related Articles

Distributed computing

distributeddistributed systemsdistributed system
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared network), which is coded as if it were a normal (local) procedure call, without the programmer explicitly coding the details for the remote interaction.
There are many different types of implementations for the message passing mechanism, including pure HTTP, RPC-like connectors and message queues.

Bruce Jay Nelson

Bruce NelsonBruce J. Nelson
Bruce Jay Nelson is generally credited with coining the term "remote procedure call" in 1981.
Bruce Jay Nelson (January 19, 1952 – September 19, 1999) was an American computer scientist best known as the inventor of the remote procedure call concept for computer network communications.

Open Network Computing Remote Procedure Call

ONC RPCSun's RPCONC remote procedure call
The first popular implementation of RPC on Unix was Sun's RPC (now called ONC RPC), used as the basis for Network File System (NFS).
Open Network Computing (ONC) Remote Procedure Call (RPC) is a remote procedure call system.

Inter-process communication

interprocess communicationIPCinterapplication communication
RPCs are a form of inter-process communication (IPC), in that different processes have different address spaces: if on the same host machine, they have distinct virtual address spaces, even though the physical address space is the same; while if they are on different hosts, the physical address space is different. D-Bus open source IPC program provides similar function to CORBA.

Marshalling (computer science)

marshallingmarshalmarshalled
2) The client stub packs the parameters into a message and makes a system call to send the message. Packing the parameters is called marshalling.
Marshalling is used within implementations of different remote procedure call (RPC) mechanisms, where it is necessary to transport data between processes and/or between threads.

Stub (distributed computing)

stub
1) The client calls the client stub. The call is a local procedure call, with parameters pushed on to the stack in the normal way.
A stub in distributed computing is a piece of code that converts parameters passed between client and server during a remote procedure call (RPC).

Interface description language

IDLinterface definition languagecall semantics
Most of these use an interface description language (IDL) to let various platforms call the RPC.
IDLs are commonly used in remote procedure call software.

Distributed object communication

remote method invocationRMIremote invocation
2) The client stub packs the parameters into a message and makes a system call to send the message. Packing the parameters is called marshalling. In the object-oriented programming paradigm, RPC calls are represented by remote method invocation (RMI). In the 1990s, with the popularity of object-oriented programming, the alternative model of remote method invocation (RMI) was widely implemented, such as in Common Object Request Broker Architecture (CORBA, 1991) and Java remote method invocation.
Invoking a method on a remote object is known as remote method invocation (RMI) or remote invocation, and is the object-oriented programming analog of a remote procedure call (RPC).

RC 4000 multiprogramming system

MonitorNucleusRC 4000
Remote procedure calls used in modern operating systems trace their roots back to the RC 4000 multiprogramming system, which used a request-response communication protocol for process synchronization.
Note that messages had an implicit "return path" for every message sent, making the semantics more like a remote procedure call than Mach's completely I/O-based system.

Newcastle Connection

One of the earliest practical implementations was in 1982 by Brian Randell and colleagues for their Newcastle Connection between UNIX machines.
A match would divert such a reference through to the new software, which then used remote procedure calls to the remote machine.

RPyC

RPyC implements RPC mechanisms in Python, with support for asynchronous calls.
RPyC (pronounced are-pie-see), or Remote Python Call, is a Python library for remote procedure calls (RPC), as well as distributed computing.

Per Brinch Hansen

Brinch Hansen Brinch Hansen, Per
In 1978, Per Brinch Hansen proposed Distributed Processes, a language for distributed computing based on "external requests" consisting of procedure calls between processes.
Later in 1978, Brinch Hansen published the Distributed Processes language concept, proposing the use of remote procedure calls to synchronize processes running across a microcomputer network.

D-Bus

DBuskdbus
D-Bus open source IPC program provides similar function to CORBA.
a software bus, is an inter-process communication (IPC) and remote procedure call (RPC) mechanism that allows communication between multiple computer programs (that is, processes) concurrently running on the same machine.

XML-RPC

XMLRPCXML/RPC service
XML-RPC is an RPC protocol that uses XML to encode its calls and HTTP as a transport mechanism.
XML-RPC is a remote procedure call (RPC) protocol which uses XML to encode its calls and HTTP as a transport mechanism.

Java remote method invocation

RMIJava RMIRemote Method Invocation
In the 1990s, with the popularity of object-oriented programming, the alternative model of remote method invocation (RMI) was widely implemented, such as in Common Object Request Broker Architecture (CORBA, 1991) and Java remote method invocation.
In computing, the Java Remote Method Invocation (Java RMI) is a Java API that performs remote method invocation, the object-oriented equivalent of remote procedure calls (RPC), with support for direct transfer of serialized Java classes and distributed garbage-collection.

Request–response

request-responserequestrequest-reply
This is a form of client–server interaction (caller is client, executor is server), typically implemented via a request–response message-passing system.
Remote procedure call

Internet Communications Engine

IceZeroC IceZeroC ICE IceGrid
ZeroC's Internet Communications Engine (Ice) distributed computing platform.
The Internet Communications Engine, or Ice, is an open-source RPC framework developed by ZeroC. It provides SDKs for C++, C#, Java, JavaScript, MATLAB, Objective-C, PHP, Python, and Ruby, and can run on various operating systems, including Linux, Windows, macOS, iOS and Android.

PARC (company)

Xerox PARCPARCPalo Alto Research Center
This was soon followed by "Lupine" by Andrew Birrel and Bruce Nelson in the Cedar environment at Xerox PARC.
The Association for Computing Machinery (ACM) Software System Award recognized the Alto system in 1984, Smalltalk in 1987, InterLisp in 1992, and the remote procedure call in 1994.

JSON-RPC

JSON IPCJSON RPC
JSON-RPC is an RPC protocol that uses JSON-encoded messages
JSON-RPC is a remote procedure call protocol encoded in JSON.

Common Object Request Broker Architecture

CORBACCMCORBA IDL
D-Bus open source IPC program provides similar function to CORBA. In the 1990s, with the popularity of object-oriented programming, the alternative model of remote method invocation (RMI) was widely implemented, such as in Common Object Request Broker Architecture (CORBA, 1991) and Java remote method invocation.
In addition to providing users with a language and a platform-neutral remote procedure call (RPC) specification, CORBA defines commonly needed services such as transactions and security, events, time, and other domain-specific interface models.

Apache Thrift

Thrift
Apache Thrift protocol and framework.
It forms a remote procedure call (RPC) framework and was developed at Facebook for "scalable cross-language services development".

Unmarshalling

5) The server stub unpacks the parameters from the message. Unpacking the parameters is called unmarshalling.
Hence, unmarshalling is generally used in the receiver end of the implementations of Remote Method Invocation (RMI) and Remote Procedure Call (RPC) mechanisms to unmarshal transmitted objects in an executable form.

DCE/RPC

The Microsoft DCOM uses MSRPC which is based on DCE/RPC
DCE/RPC, short for "Distributed Computing Environment / Remote Procedure Calls", is the remote procedure call system developed for the Distributed Computing Environment (DCE).

Web Application Messaging Protocol

WAMPWeb Application Messaging Protocol (WAMP)
WAMP combines RPC and Publish-Subscribe into a single, transport-agnostic protocol.
WAMP is a WebSocket subprotocol registered at IANA, specified to offer routed RPC and PubSub.

Operating system

operating systemsOScomputer operating system
3) The client's local operating system sends the message from the client machine to the server machine.
This means that computers running dissimilar operating systems can participate in a common network for sharing resources such as computing, files, printers, and scanners using either wired or wireless connections.