This action might not be possible to undo. Are you sure you want to continue?
Remote procedure call
In computer science, a remote procedure call (RPC) is an inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding the details for this remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. When the software in question uses object-oriented principles, RPC is called remote invocation or remote method invocation. Many different (often incompatible) technologies can be used to implement the concept.
History and origins
The idea of treating computer network operations as remote procedure calls goes back at least to the 1970s in early ARPANET documents. Bruce Jay Nelson is generally credited with coining the term. 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 (now called ONC RPC), used as the basis for Network File System.
An RPC is initiated by the client, which sends a request message to a known remote server to execute a specified procedure with supplied parameters. The remote server sends a response to the client, and the application continues its process. There are many variations and subtleties in various implementations, resulting in a variety of different (incompatible) RPC protocols. While the server is processing the call, the client is blocked (it waits until the server has finished processing before resuming execution), unless the client sends an asynchronous request to the server, such as an XHTTP call. An important difference between remote procedure calls and local calls is that remote calls can fail because of unpredictable network problems. Also, callers generally must deal with such failures without knowing whether the remote procedure was actually invoked. Idempotent procedures (those that have no additional effects if called more than once) are easily handled, but enough difficulties remain that code to call remote procedures is often confined to carefully written low-level subsystems.
Sequence of events during a RPC
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. 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. 3. The kernel sends the message from the client machine to the server machine. 4. The kernel on the server machine passes the incoming packets to the server stub. 5. Finally, the server stub calls the server procedure. The reply traces the same steps in the reverse direction.
Software System Award citation. . DRb uses remote method invocation (RMI) to pass commands and data between processes.NET framework for building connected. • • • • • • • • • • • Pyro object-oriented form of RPC for Python.  "1994 – Andrew Birrell. org/ ~provos/ libevent/ doxygen-1.fpid. Google Web Toolkit uses an asynchronous RPC to communicate the server service. acm. org/ html/ rfc707). Libevent provides a framework for creating RPC servers and clients. Retrieved July 11. cfm?id=5125494& srt=all& aw=149& ao=SOFTWSYS& yr=1994). ZeroC's Internet Communications Engine (Ice) distributed computing platform. Xerox Palo Alto Research Center. Bruce Nelson: Remote Procedure Call" (http:/ / awards.  http:/ / www.pp. a number of standardized RPC systems have been created. 2011. Association for Computing Machinery. which is licensed under the GFDL.1  http:/ / www.Remote procedure call 2 Standard contact mechanisms To let different clients access servers.1422447371. 10/ . • RPyC implements RPC mechanisms in Python. Web Further information: Web service#Styles of use References This article was originally based on material from the Free On-line Dictionary of Computing. Other RPC analogues RPC analogues found elsewhere: • Java's Java Remote Method Invocation (Java RMI) API provides similar functionality to standard Unix RPC methods. Augmentation Research Center. • Modula-3's network objects. PhD thesis. Retrieved July 11. org/ citation. php/ id. 1975). RFC 707. Facebook's Thrift protocol and framework.  Bruce Jay Nelson (May 1981). ietf. The most common tool used for this is RPCGEN. which were the basis for |Java's RMI • XML-RPC is an RPC protocol that uses XML to encode its calls and HTTP as a transport mechanism. computerworld. Special Interest Group on Operating Systems. • JSON-RPC is an RPC protocol that uses JSON-encoded messages • JSON-WSP is an RPC protocol that uses JSON-encoded messages • SOAP is a successor of XML-RPC and also uses XML to encode its HTTP-based calls. com. with support for asynchronous calls. CORBA provides remote procedure invocation through an intermediate layer called the object request broker.  "SIGOPS Hall of Fame Award" (http:/ / www.NET Remoting offers RPC facilities for distributed systems implemented on the Windows platform. Most of these use an interface description language (IDL) to let various platforms call the RPC. Action Message Format (AMF) allows Adobe Flex applications to communicate with back-ends or other applications that support AMF. Retrieved July 11.fp. . • Microsoft . 2011. . org/ award-hof. The IDL files can then be used to generate code to interface between the client and server.3. 4. Association for Computing Machinery. Remote Procedure Call. Google Protocol Buffers (protobufs) package includes an interface definition language used for its RPC protocols.  James E. monkey. sigops.4194304. service-oriented applications. html). Windows Communication Foundation is an application programming interface in the . 2011. "A High-Level Framework for Network-Based Resource Sharing" (http:/ / tools. Distributed Ruby (DRb) allows Ruby programs to communicate with each other on the same machine or over a network. Etch (protocol) framework for building network services. au/ index. White (December 23.
3 Further reading • Birrell. A. 2011. (1984).Google's data interchange format" (http:/ / code. doi:10. from SGI IRIX documentation. com/ webtoolkit/ ).1145/2080. B.cf. Nelson. .cgi?coll=0650& db=bks&srch=&fname=/SGI_Developer/IRIX_NetPG/sgi_html/ch04. . google. Google project website.html) — A developer's introduction to RPC and XDR. J. Retrieved November 1.  "Google Web Toolkit" (http:/ / code.Specifies version 2 of ONC RPC • Remote Procedure Calls (RPC) (http://www. google. .Remote procedure call  "Protocol Buffers . D.cs.357392. Google project website. 2011.com/library/tpl/cgi-bin/getdoc.ac.sgi.html) — A tutorial on ONC RPC by Dr Dave Marshall of Cardiff University • Introduction to RPC Programming (http://techpubs. "Implementing remote procedure calls". Retrieved November 1. ACM Transactions on Computer Systems 2: 39.uk/Dave/C/node33.. External links • RFC 1057 .Specifies version 1 of ONC RPC • RFC 5531 . com/ p/ protobuf/ ).
Secured128. Sander. Can't sleep.Article Sources and Contributors 4 Article Sources and Contributors Remote procedure call Source: http://en. Joakim Ziegler. William Allen Simpson. Pretzelpaws. Eyreland. Mipadi. Ivmai77. Frap. Mange01. Lastorset. Goutham 9. Youssefsan. Waxmop. Beatfox. Michael Hardy. BurntSky. Maury Markowitz. Itai. Kgaughan. Mwtoews. Aldie. Intgr. Velle. Guy Harris. Astronouth7303. Conversion script.dolivo. CanisRufus. Amolshah. Nicholas Sund. Mohit kesarwani. Raigedas. clown will eat me. Cybercobra. Janssen. JLaTondre. Paddles. Tobias Bergemann. Peturbed. Emperorbma. Bovineone. Blainster. Enjoi4586. Christopher Mahan. Jeiki Rebirth. Sgould. Katherine. Marj Tiefert. Shangri. Grunt. Sparky62. 209 anonymous edits License Creative Commons Attribution-Share Alike 3.Sailer. Huds. RobertStar20. Joe. Larsinio. Kooky.0 Unported //creativecommons. Strait. Fritz Saalfeld.org/licenses/by-sa/3. KneeLess. Mraric. Ian Yorston. Miym.wikipedia. Chris Chittleborough. Versus22. Venkytv.php?oldid=476968622 Contributors: A930913. Esposimi. Lenehey. Toytoy. R. RedWolf. Andreas Kaufmann.org/w/index. Sergey shandar. Tony1. Andre Engels. Shaw. Minipie8.0/ . Velella. Walden. Nat Mishkin. Dbroadwell. Pedroarroba. Bomazi. W Nowicki. Dysprosia. Andot. Kinema. Suruena. ILikeThings. Jakobsg. Wknight94. JonSangster. Johnuniq. Kbrose. TwoOneTwo. Ewlyahoocom. Guidod. Marekventur. Medinoc. Jsnx. Lakmiviji. Shadowjams. Wrs1864. Wik. Raanoo. Lee. Keithdunwoody. Rich Farmbrough. S. Pkamala. Reisio.