RPC stands for Remote Procedure Calls. It is a protocol that one program can use to request a service from a program located in another computer on a network without having to deal with the complexities of the network.
A call of this kind usually occurs when a computer program causes a procedure to execute in the address space of another computer on a shared network. Such calls are coded to look similar to the calls to the same system i.e. the user is completely abstracted from the fact that the functioning is taking place on a different system of the same network.
RPCs are a form of IPC(Inter-process communication), if the call is made to the host machine, the process differs in virtual address space, the physical address being the same but when a host is a different machine they differ in physical addresses too.
It is a method of communicating and it employs the request-response paradigm to do so.
There are three types of RPCs-
- Callback RPC
- Broadcast RPC
- Batch-Mode RPC
- Bruce Jay Nelson first coined the term “remote procedure call” in 1981.
- ARPANET document shows that they thought of the idea of treating network operations as RPCs.
- RPCs used in modern computing systems roots back RC 4000 multiprogramming system which used request- response model for process synchronization.
- In 1982, Brian Randell and colleagues used RPCs for their Newcastle Connection between UNIX machines. This was soon followed by Andrew Birrell and Bruce Nelson for “Lupine” in the Cedar environment at Xerox PARC. This was first recorded business use of RPCs.
- It uses request-response paradigm for communication and can in fact be used for message passing between two processes on two different systems but on the same network.
- The call syntax is simple and is similar to the local calls.
- It executes within the environment of the server process.
- It can be employed for communicating between processes which are on the same machine as well as on a different machine.
- Process-oriented and thread oriented models support RPC.
- uses procedure calls in high-level languages that helps clients to communicate with servers.
- abstracts internal message passing mechanism from the user.
- minimizes the effort to re-write and re-develop the code.
- allows the usage of the application even in a distributed environment.
- provides abstraction.
- It commits many of the protocol layers to improve performance.
- doesn’t offer any flexibility in hardware-architecture.
- Remote calls are slower and less reliable than local calls.
- This concept can be implemented in many ways thus, this can’t be standardized.
- Highly vulnerable to failure.
- Effective cost is higher while setting up for networks that could support RPCs.