Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Remote procedure call
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==History and origins== Request–response protocols date to early distributed computing in the late 1960s, theoretical proposals of remote procedure calls as the model of network operations date to the 1970s, and practical implementations date to the early 1980s. [[Bruce Jay Nelson]] is generally credited with coining the term "remote procedure call" in 1981.<ref>{{cite thesis |type=PhD thesis |author= Bruce Jay Nelson |title= Remote Procedure Call |id= PARC CSL-81-9 (Also CMU-CS-81-119) |publisher= Xerox Palo Alto Research Center |date= May 1981 |author-link= Bruce Jay Nelson }}</ref> Remote procedure calls used in modern operating systems trace their roots back to the RC 4000 multiprogramming system,<ref>{{Cite web|title = Per Brinch Hansen • IEEE Computer Society|url = http://www.computer.org/web/awards/pioneer-per-hansen|website = www.computer.org|access-date = 2015-12-15}}</ref> which used a request-response communication protocol for process synchronization.<ref>{{Cite book|title = RC 4000 Computer Software: Multiprogramming System|last = Brinch Hansen|first = Per|publisher = Regnecentralen|year = 1969|location = Copenhagen, Denmark|url = http://brinch-hansen.net/papers/1969c.pdf}}</ref> The idea of treating network operations as remote procedure calls goes back at least to the 1970s in early [[ARPANET]] documents.<ref>{{cite journal |title= A High-Level Framework for Network-Based Resource Sharing |author= James E. White |date= December 23, 1975 |publisher= [[Augmentation Research Center]] |journal= RFC 707 |doi= 10.17487/RFC0707 |url= http://tools.ietf.org/html/rfc707 |access-date= July 11, 2011 |doi-access= free |url-access= subscription }}</ref> In 1978, [[Per Brinch Hansen]] proposed Distributed Processes, a language for distributed computing based on "external requests" consisting of procedure calls between processes.<ref>{{Cite journal|url = http://brinch-hansen.net/papers/1978a.pdf|title = Distributed processes: a concurrent programming concept|last = Brinch Hansen|first = Per|date = November 1978|journal = Communications of the ACM|volume = 21|issue = 11|pages = 934–941|doi = 10.1145/359642.359651|citeseerx = 10.1.1.107.3108| s2cid=11610744 }}</ref> One of the earliest practical implementations was in 1982 by [[Brian Randell]] and colleagues for their [[Newcastle Connection]] between UNIX machines.<ref name="Newcastle_1982">{{cite journal |title=The Newcastle Connection |author-last1=Brownbridge |author-first1=David R. |author-last2=Marshall |author-first2=Lindsay F. |author-last3=Randell |author-first3=Brian |author-link3=Brian Randell |journal=Software: Practice and Experience |volume=12 |issue=12 |year=1982 |doi=10.1002/spe.4380121206 |pages=1147–1162 |s2cid=1840438 |url=http://www.cs.ncl.ac.uk/publications/articles/papers/399.pdf |access-date=2016-08-16 |url-status=dead |archive-url=https://web.archive.org/web/20160816184205/http://www.cs.ncl.ac.uk/research/pubs/articles/papers/399.pdf |archive-date=2016-08-16 }}</ref> This was soon followed by "Lupine" by Andrew Birrell and Bruce Nelson in the [[Cedar (programming environment)|Cedar]] environment at [[Xerox PARC]].<ref>{{cite journal|doi=10.1145/2080.357392|year = 1984|title = Implementing remote procedure calls|journal = ACM Transactions on Computer Systems|volume = 2|pages = 39–59|last1 = Birrell|first1 = Andrew D.|last2 = Nelson|first2 = Bruce Jay| s2cid=11525846 |url = https://www.cs.cmu.edu/~dga/15-712/F07/papers/birrell842.pdf}}</ref><ref name="award1994">{{cite web |title= 1994 – Andrew Birrell, Bruce Nelson: Remote Procedure Call |publisher= [[Association for Computing Machinery]] |work= Software System Award citation |url= http://awards.acm.org/citation.cfm?id=5125494&srt=all&aw=149&ao=SOFTWSYS&yr=1994 |access-date= July 11, 2011 |url-status= dead |archive-url= https://web.archive.org/web/20120402204704/http://awards.acm.org/citation.cfm?id=5125494&srt=all&aw=149&ao=SOFTWSYS&yr=1994 |archive-date= April 2, 2012 }}</ref><ref>{{cite web |title= SIGOPS Hall of Fame Award |publisher= [[Association for Computing Machinery]] |work= Special Interest Group on Operating Systems |url= http://www.sigops.org/award-hof.html |access-date= July 11, 2011 }}</ref> Lupine automatically generated stubs, providing type-safe bindings, and used an efficient protocol for communication.<ref name="award1994"/> 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 (NFS). In the 1990s, with the popularity of [[object-oriented programming]], an 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. RMIs, in turn, fell in popularity with the rise of the internet, particularly in the 2000s.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)