In RPC, the sender makes a request in the form of a procedure, function, or method call. RPC translates these calls into requests sent over the network to the intended destination. The RPC recipient then processes the request based on the procedure name and argument list, sending a response to the sender when complete. RPC applications generally implement software modules called "proxies" and "stubs" that broker the remote calls and make them appear to the programmer the same as local procedure calls (LPC).
RPC calling applications usually operate synchronously, waiting for the remote procedure to return a result. RPC incorporates timeout logic to handle network failures or other situations where RPCs do not return.
RPC has been a common programming technique in the Unix world since the 1990s. The Open Systems Foundation (OSF) Distributed Computing Environment (DCE) and Sun Microsystems Open Network Computing (ONC) libraries both were widely deployed. More recent examples of RPC technologies include Microsoft DCOM, Java RMI, and XML-RPC and SOAP.