肠梗阻是什么症状| 绿茶用什么茶具泡好| 江郎才尽是什么意思| 长期吃二甲双胍有什么副作用| 什么牌子的冰箱好用又省电| 肠易激综合征中医叫什么| 横死是什么意思| 吃什么可以降血脂| 弱精是什么意思| 10月20日什么星座| 脾大是什么原因| 准备的近义词是什么| 焦是什么意思| 钦字五行属什么| 孕妇建档需要检查什么| 什么是眼底病| 什么是备孕| 墨水用什么能洗掉| 胎心快是什么原因| 黄牌是什么意思| 女人吃猪肝有什么好处| 不走寻常路是什么意思| 报捕是什么意思| 什么是回南天| 梦见一个人说明什么| 蜘蛛痣长什么样| 摩尔是什么| 大便颗粒状是什么原因造成的| 瞳孔缩小见于什么病| 日金念什么| 胆囊结石不能吃什么| 输卵管囊肿是什么原因引起的| 海洋里面有什么动物| 什么情| 1920年属什么生肖| 最大的狗是什么品种| 前哨是什么意思| 备孕男性吃什么精子强| 女人骨质疏松吃什么最好| 在什么| 9点到11点是什么经络| 县委办公室主任是什么级别| 处暑的处是什么意思| 高血压喝什么茶| 半岛铁盒是什么| 月经量少吃什么调理快| 拔罐红色是什么原因| 吴亦凡演过什么电影| 明月几时有的下一句是什么| 哦买噶什么意思| 洗了牙齿要注意什么| 苏醒是什么意思| 阴虱是什么样子图片| 耳朵外面痒是什么原因| 脱氧核苷酸是什么| 血小板分布宽度偏高是什么意思| i.t品牌什么档次| 高考用什么笔| 婴幼儿积食会有什么症状| 美国为什么不敢打伊朗| 肠管积气是什么原因| 一什么绳子| 叶黄素对眼睛有什么功效| 脚上脱皮是什么原因| 人类是什么动物| 腰间盘突出是什么症状| 先兆性流产是什么症状| gg是什么品牌| 合盘是什么意思| 正连级相当于地方什么级别| 动物的尾巴有什么用处| cg动画是什么意思| 美人盂是什么意思| 尿分叉是什么原因| 一直发烧不退是什么原因| 两肋胀满闷胀是什么病| 七年是什么婚| 甘油三酯高吃什么药能降下来| 突然长胖很多是什么原因| 排骨炖什么汤止咳润肺| 空唠唠的意思是什么| 梳子断了有什么预兆| 金代表什么生肖| 阴险表情什么意思| 治疗阳痿早泄用什么药| 颈椎病最怕干什么活| acei是什么意思| 中午12点到1点是什么时辰| 普洱茶属于什么茶| 茉莉花茶属于什么茶类| 胰腺ca是什么意思| 阑尾炎不能吃什么| 冰箱什么牌子好又省电质量又好| 龙脉是什么意思| 西装外套配什么裤子| kkkk是什么意思| 2009是什么年| 大理寺卿是什么职位| 开半挂车需要什么证| 经常手淫会导致什么| 11月18号是什么星座的| 晕车药叫什么名字| 春茶是什么茶| 间歇脉多见于什么病| 胃肠型感冒吃什么药| 不什么思什么| 什么叫造口| 什么季节减肥效果最快最好| 400多分能上什么大学| 做喉镜能检查出什么病| 吃什么对胆囊有好处| 腹泻是什么| 吃什么代谢快有助于减肥| tam是什么意思| 穿山甲用什么中药代替| gh是什么意思| 禾字五行属什么| 六月十四是什么星座| 逍遥丸的功效和作用是什么| 尿不出来吃什么药| 频繁打哈欠是什么原因| 天山童姥练的什么武功| 免疫力低吃什么补| 独什么心什么| 补肾壮阳吃什么效果好| 抗日战争什么时候开始的| 八仙过海开过什么生肖| 改名字需要什么手续| 1919年属什么生肖| 白莲子和红莲子有什么区别| 蝙蝠来家里是什么预兆| 兰花的花语是什么| 落荒而逃什么意思| 结婚五十年是什么婚| 吃什么食物可以降低胆固醇| 清鱼是什么鱼| 子宫肌瘤是什么原因引起的| 牙齿涂氟是什么意思| 什么叫市级以上医院| 佑是什么意思| 喀秋莎什么意思| 28岁属相是什么生肖| 西红柿生吃有什么好处| 什么叫辅酶q10| 梦到手机丢了什么预兆| 天蝎是什么象星座| 用什么泡水喝补肾| 肝区回声密集是什么意思| 血小板减少是什么原因造成的| 吃什么食物对胰腺好| 吃什么能拉肚子| 儿童吃什么钙片补钙效果好| 张飞穿针歇后语下一句是什么| 手肿脚肿是什么原因引起的| 罢黜百家独尊儒术是什么意思| 三眼花翎是什么意思| 月子里可以吃什么水果| 老花镜什么品牌好| 乳腺一类是什么意思| 公章一般是什么字体| 生活是什么| 阴道干涩是什么原因| 美特斯邦威是什么档次| lsa是什么意思| ic是什么意思| 尿素酶阳性什么意思| 乙肝没有抗体是什么意思| 晚上8点到9点是什么时辰| 什么是三宝| 矢量图是什么格式| 什么降血压效果最好| 8月初是什么星座| 卵泡刺激素高说明什么| 军士长是什么级别| 茯苓是什么| 人夫是什么意思| navy什么意思| 日丙念什么| 儿童结膜炎用什么眼药水| 今天天气适合穿什么衣服| 减胎对另一个胎儿有什么影响| 皮肤发痒用什么药| 前列腺炎该吃什么药| 长发公主叫什么名字| 师弟是什么意思| 面条吃多了有什么坏处| 鸡肉和什么菜搭配最好| carnival手表什么牌子| 食道炎吃什么药好| 阿魏酸是什么| 四个火读什么| 斜视是什么原因导致的| 高锰酸钾在药店叫什么| 开救护车需要什么条件| 童瑶为什么要告黄定宇| 机场地勤是干什么的| kids是什么品牌| 什么东西可以代替阴茎| ph值小于7是什么意思| 手脚麻木是什么原因引起的| 头痛用什么药好| 前羽念什么| 天庭是什么意思| 番茄是什么| 不什么其什么的成语| 玟是什么意思| 烫伤忌口不能吃什么| 部队政委是什么级别| 语文是什么| 同房后需要注意什么| 脑梗的人适合吃什么食物| 举目无亲是什么生肖| 70年产权是从什么时候开始算| 甘油三酯偏高吃什么药| 白羊座的幸运色是什么颜色| 灵芝不能和什么一起吃| 血小板少是什么病| 什么是脂溢性皮炎| 酮体是什么意思| 越南讲什么语言| 股骨头坏死什么原因| 月经推迟十天是什么原因| 口且念什么| 脚热是什么原因引起的| 什么食物补钙效果最好最快| 儿童节吃什么| 嘢是什么意思| 乳酸菌是什么菌| 99朵玫瑰花代表什么| 有龙则灵的灵是什么意思| 甲类传染病指什么| 维生素h的作用及功能主治是什么| 藿香正气水什么时候喝| 泌乳素高有什么症状表现| 名创优品是卖什么的| 男人好难做人好难是什么歌| 呈现是什么意思| 头总是昏昏沉沉的是什么原因| 肥宅是什么意思| 1962属什么| 戴帽子是什么意思| 睡多了头疼是什么原因| 脸上突然长痣是什么原因| 小米可以和什么一起煮粥| 为什么叫白俄罗斯| 梦见掉牙齿是什么意思| 什么瓜不能吃脑筋急转弯| 帕金森是什么引起的| 左手臂有痣代表什么| 榴莲和什么水果相克| 虎头蜂泡酒有什么功效| 长春有什么大学| 什么是酸| 办幼儿园需要什么证| 什么是格林巴利综合症| 今晚开什么特马| 苦瓜和什么不能一起吃| 鲱鱼是什么鱼| 宫内囊性回声代表什么| 男人做什么运动能提高性功能| 婴儿便秘怎么办什么方法最有效| 足字旁的字与什么有关| 拉大便肛门口疼痛什么原因| 肌肉疼痛吃什么药| 百度Jump to content

临湖公路皇姑塘立交桥附属工程完工80%【图】

From Wikipedia, the free encyclopedia
百度 据国网西安供电公司调度中心的数据显示:在今年地球一小时活动期间,西安电网减少用电约万度。

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 computer network), which is written as if it were a normal (local) procedure call, without the programmer explicitly writing the details for the remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. This is a form of server interaction (caller is client, executor is server), typically implemented via a request–response message passing system. In the object-oriented programming paradigm, RPCs are represented by remote method invocation (RMI). The RPC model implies a level of location transparency, namely that calling procedures are largely the same whether they are local or remote, but usually, they are not identical, so local calls can be distinguished from remote calls. Remote calls are usually orders of magnitude slower and less reliable than local calls, so distinguishing them is important.

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 also different. Many different (often incompatible) technologies have been used to implement the concept.

History and origins

[edit]

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.[1]

Remote procedure calls used in modern operating systems trace their roots back to the RC 4000 multiprogramming system,[2] which used a request-response communication protocol for process synchronization.[3] The idea of treating network operations as remote procedure calls goes back at least to the 1970s in early ARPANET documents.[4] In 1978, Per Brinch Hansen proposed Distributed Processes, a language for distributed computing based on "external requests" consisting of procedure calls between processes.[5]

One of the earliest practical implementations was in 1982 by Brian Randell and colleagues for their Newcastle Connection between UNIX machines.[6] This was soon followed by "Lupine" by Andrew Birrell and Bruce Nelson in the Cedar environment at Xerox PARC.[7][8][9] Lupine automatically generated stubs, providing type-safe bindings, and used an efficient protocol for communication.[8] 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.

Message passing

[edit]

RPC is a request–response protocol. 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. 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 XMLHttpRequest. There are many variations and subtleties in various implementations, resulting in a variety of different (incompatible) RPC protocols.

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

[edit]
  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 client's local operating system sends the message from the client machine to the server machine.
  4. The local operating system on the server machine passes the incoming packets to the server stub.
  5. The server stub unpacks the parameters from the message. Unpacking the parameters is called unmarshalling.
  6. Finally, the server stub calls the server procedure. The reply traces the same steps in the reverse direction.

Standard contact mechanisms

[edit]

To let different clients access servers, a number of standardized RPC systems have been created. Most of these use an interface description language (IDL) to let various platforms call the RPC. The IDL files can then be used to generate code to interface between the client and servers.

Analogues

[edit]

Notable RPC implementations and analogues include:

Language-specific

[edit]
  • Java's Java Remote Method Invocation (Java RMI) API provides similar functionality to standard Unix RPC methods.
  • Go provides package rpc for implementing RPC, with support for asynchronous calls.
  • Modula-3's network objects, which were the basis for Java's RMI[10]
  • RPyC implements RPC mechanisms in Python, with support for asynchronous calls.
  • Distributed Ruby (DRb) allows Ruby programs to communicate with each other on the same machine or over a network. DRb uses remote method invocation (RMI) to pass commands and data between processes.
  • Erlang is process oriented and natively supports distribution and RPCs via message passing between nodes and local processes alike.
  • Elixir builds on top of the Erlang VM and allows process communication (Elixir/Erlang processes, not OS processes) of the same network out-of-the-box via Agents and message passing.
  • Google's Rust RPC framework Tarpc lets developers define the structure of messages using Rust's structs and traits, rather than using protobuf.[11]

Application-specific

[edit]
  • Action Message Format (AMF) allows Adobe Flex applications to communicate with back-ends or other applications that support AMF.
  • Remote Function Call is the standard SAP interface for communication between SAP systems. RFC calls a function to be executed in a remote system.

General

[edit]
  • NFS (Network File System) is one of the most prominent users of RPC
  • Open Network Computing RPC, by Sun Microsystems (also known as Sun RPC)
  • D-Bus open source IPC program provides similar function to CORBA.
  • SORCER provides the API and exertion-oriented language (EOL) for a federated method invocation
  • XML-RPC is an RPC protocol that uses XML to encode its calls and HTTP as a transport mechanism.
  • JSON-RPC is an RPC protocol that uses JSON-encoded messages.
  • JSON-WSP is an RPC protocol that is inspired from JSON-RPC.
  • SOAP is a successor of XML-RPC and also uses XML to encode its HTTP-based calls.
  • ZeroC's Internet Communications Engine (Ice) distributed computing platform.
  • Etch framework for building network services.
  • Apache Thrift protocol and framework.
  • CORBA provides remote procedure invocation through an intermediate layer called the object request broker.
  • Libevent provides a framework for creating RPC servers and clients.[12]
  • Windows Communication Foundation is an application programming interface in the .NET framework for building connected, service-oriented applications.
  • Microsoft .NET Remoting offers RPC facilities for distributed systems implemented on the Windows platform. It has been superseded by WCF.
  • The Microsoft DCOM uses MSRPC which is based on DCE/RPC
  • The Open Software Foundation DCE/RPC Distributed Computing Environment (also implemented by Microsoft).
  • Google Protocol Buffers (protobufs) package includes an interface definition language used for its RPC protocols[13] open sourced in 2015 as gRPC.[14]
  • WAMP combines RPC and Publish-Subscribe into a single, transport-agnostic protocol.
  • Google Web Toolkit uses an asynchronous RPC to communicate to the server service.[15]
  • Apache Avro provides RPC where client and server exchange schemas in the connection handshake and code generation is not required.

See also

[edit]

References

[edit]
  1. ^ Bruce Jay Nelson (May 1981). Remote Procedure Call (PhD thesis). Xerox Palo Alto Research Center. PARC CSL-81-9 (Also CMU-CS-81-119).
  2. ^ "Per Brinch Hansen ? IEEE Computer Society". www.computer.org. Retrieved 2025-08-06.
  3. ^ Brinch Hansen, Per (1969). RC 4000 Computer Software: Multiprogramming System (PDF). Copenhagen, Denmark: Regnecentralen.
  4. ^ James E. White (December 23, 1975). "A High-Level Framework for Network-Based Resource Sharing". RFC 707. Augmentation Research Center. doi:10.17487/RFC0707. Retrieved July 11, 2011.
  5. ^ Brinch Hansen, Per (November 1978). "Distributed processes: a concurrent programming concept" (PDF). Communications of the ACM. 21 (11): 934–941. CiteSeerX 10.1.1.107.3108. doi:10.1145/359642.359651. S2CID 11610744.
  6. ^ Brownbridge, David R.; Marshall, Lindsay F.; Randell, Brian (1982). "The Newcastle Connection" (PDF). Software: Practice and Experience. 12 (12): 1147–1162. doi:10.1002/spe.4380121206. S2CID 1840438. Archived from the original (PDF) on 2025-08-06. Retrieved 2025-08-06.
  7. ^ Birrell, Andrew D.; Nelson, Bruce Jay (1984). "Implementing remote procedure calls" (PDF). ACM Transactions on Computer Systems. 2: 39–59. doi:10.1145/2080.357392. S2CID 11525846.
  8. ^ a b "1994 – Andrew Birrell, Bruce Nelson: Remote Procedure Call". Software System Award citation. Association for Computing Machinery. Archived from the original on April 2, 2012. Retrieved July 11, 2011.
  9. ^ "SIGOPS Hall of Fame Award". Special Interest Group on Operating Systems. Association for Computing Machinery. Retrieved July 11, 2011.
  10. ^ The A-Z of Programming Languages: Modula-3 - a-z of programming languages Archived 2025-08-06 at the Wayback Machine. Computerworld. Retrieved on 2025-08-06.
  11. ^ tarpc, Google, 2025-08-06, retrieved 2025-08-06
  12. ^ libevent: Main Page. Monkey.org. Retrieved on 2025-08-06.
  13. ^ "Protocol Buffers - Google's data interchange format". Google project website. Retrieved November 1, 2011.
  14. ^ "gRPC open-source universal RPC framework". Google project website. Retrieved September 7, 2016.
  15. ^ "Google Web Toolkit". Google project website. Retrieved November 1, 2011.
[edit]
  • RFC 5531 - Specifies version 2 of ONC RPC (fourth published RFC version)
  • RFC 1831 - Specifies version 2 of ONC RPC (third published RFC version)
  • RFC 1057 - Specifies version 2 of ONC RPC (second published RFC version)
  • RFC 1050 - Specifies version 2 of ONC RPC (first published RFC version)
  • Remote Procedure Calls (RPC) — A tutorial on ONC RPC by Dr Dave Marshall of Cardiff University
  • Introduction to RPC Programming — A developer's introduction to RPC and XDR, from SGI IRIX documentation.
什么的草帽 封闭针是什么药 孙子的儿子叫什么 扁桃体肥大有什么症状 查五行缺什么
义务兵是什么意思 什么药清肺最好 孕妇什么水果不能吃 淀粉是什么粉 老人嗜睡是什么原因
焱加木念什么 血糖高吃什么好能降糖 尿蛋白弱阳性什么意思 干咳有痰是什么原因 吃什么补红细胞最快
神经疼痛吃什么药 89属什么 钾偏低是什么原因 梦见炖鱼预示什么 孩子一直咳嗽不好是什么原因
离岸人民币什么意思xscnpatent.com 下面有异味是什么原因hcv7jop6ns5r.cn 什么动hcv9jop3ns6r.cn 世界上最小的花是什么花sscsqa.com 晚上睡觉手麻木是什么原因xinjiangjialails.com
百字五行属什么hcv8jop1ns8r.cn 浆细胞肿瘤是什么病hcv7jop9ns9r.cn c肽是什么hcv7jop6ns4r.cn papi是什么意思hcv8jop7ns1r.cn 眼睛流泪用什么眼药水hcv7jop9ns9r.cn
右耳朵耳鸣是什么原因hcv9jop7ns9r.cn 血清胰岛素测定查什么hcv7jop7ns2r.cn 业火是什么意思hcv9jop5ns5r.cn 吃什么补维生素b12zsyouku.com 什么叫胆汁反流性胃炎hcv7jop7ns2r.cn
棒槌是什么意思hcv9jop6ns9r.cn 脸上过敏用什么药膏hcv8jop9ns9r.cn 男人时间短什么原因hcv8jop9ns0r.cn 多吃玉米有什么好处和坏处hcv9jop1ns4r.cn 掉头发严重吃什么东西可以改善hcv9jop3ns5r.cn
百度