木须肉为什么叫木须肉| 身败名裂是什么意思| 什么现象说明奶吸通了| 男人毛发旺盛说明什么| 尊字五行属什么| 超七水晶是什么| 双相情感障碍吃什么药| 胃胀嗳气吃什么药最有效| 掉头发是什么原因| 高血压吃什么水果| 鳞状上皮内高度病变是什么意思| 睡觉被口水呛醒是什么原因| 过期的酸奶有什么用途| 头晕可以吃什么药| 手机壳为什么会发黄| 老公生日送什么礼物| 自然周是什么意思| 辰代表什么意思| 屁股右边痛是什么原因| 资产负债率高说明什么| 独家记忆是什么意思| 聿五行属什么| 脂膜炎是什么病| 血小板减少有什么症状| 芡实有什么功效| 氨咖黄敏胶囊是治什么的| 膝盖痛挂什么科| 腊月初八是什么星座| 古代宫刑是什么| 感冒咳嗽吃什么食物好| 土字生肖有钱收是什么生肖| 什么不什么身| 恢复伤口吃什么好得快| peek是什么材料| 百草霜是什么| 心跳过速吃什么药| 米果念什么| 药师什么时候报名| 孩子长个子吃什么有利于长高| 肌肉僵硬是什么原因引起的| 喝红牛有什么好处和坏处| 丢钱是什么预兆| 什么样的笑脸| 啾啾是什么意思| 红酒配什么饮料好喝| 吃什么增强抵抗力和免疫力| aoerbo是什么牌子的手表| 玛丽珍鞋是什么意思| 上面一个处下面一个日是什么字| 吃什么疏通血管最快| k金是什么金| 岁寒三友是什么意思| 晚上睡觉容易醒是什么原因| 醋酸纤维是什么面料| 大暑是什么意思啊| 家里为什么会有蜈蚣| 白内障有什么症状| 7月29号是什么日子| 犬和狗有什么区别| 阑尾炎吃什么药见效快| XX是什么意思| 换手率高说明什么| 睁一只眼闭一只眼是什么意思| 豆五行属什么| 怎么知道自己什么血型| 梦见自己生了个儿子是什么意思| 畏手畏脚是什么意思| 吃播为什么吃不胖| 女生下体长什么样子| 乳腺结节吃什么药| 毫不逊色的意思是什么| 肌肉疼痛挂什么科| 肩周炎吃什么药| 耽美剧是什么意思| 湿热吃什么| 小便很臭是什么原因| 梦魇是什么原因造成的| 后脚跟疼是什么原因| 手掌像什么| 把碗打碎了有什么征兆| 喝莓茶有什么好处| 或是什么意思| 7月26是什么星座| 逸五行属性是什么| nec医学上是什么意思| 流脑是什么病| 怀孕六个月出血是什么原因| 猥琐是什么意思| 一个米一个更念什么| 磨破皮了涂什么药| 大秀是什么意思| 嗓子痒咳嗽吃什么药| 耐药是什么意思| 胎儿右侧脉络丛囊肿是什么意思| 佛珠断了有什么预兆| 人尽可夫是什么意思| 什么是情绪| 人湿气重有什么症状| angelababy英文什么意思| 浮躁的意思是什么| 喝桑叶茶有什么好处| 胡萝卜是什么颜色| 眼睛总有眼屎是什么原因| 皮赘用什么药膏去除| 咖啡色五行属什么| pmid是什么意思| 女生安全期什么意思| 好吃懒做是什么生肖| 手经常抽筋是什么原因| 后脖子黑是什么原因| pc是什么意思| 精索静脉曲张挂什么科| 四个一是什么字| 青灰色是什么颜色| 摩羯是什么| 96166是什么电话| eee是什么牌子的鞋| 老娘们是什么意思| 以马内利是什么意思| 平身是什么意思| 人乳头瘤病毒39型阳性是什么意思| 孕酮起什么作用| 421是什么意思| 看心脏挂什么科| 女性排卵期一般在什么时候| 牛叉是什么意思| 尿蛋白阳性是什么意思| 臭氧是什么| 痰涎壅盛是什么意思| 什么动物不怕热| 胰腺炎是什么病| 沼泽是什么意思| 6月19是什么星座| 淋巴结看什么科| 氯化钠是什么| 时刻是什么意思| 茶寿为什么是108岁| 舌头边上有锯齿状是什么原因| 什么是断桥铝| 脂肪瘤吃什么药可以消除| 卢森堡为什么那么有钱| 肾结石炖什么汤喝最好| 超声波是什么意思| 女今读什么| 夏至是什么| 三无产品指的是什么| 口述是什么意思| 5月6日是什么星座| 减肥喝什么饮料| 腹痛拉肚子吃什么药| 冒菜和麻辣烫有什么区别| 肚子痛挂什么科| 动情是什么意思| 十一月二十六是什么星座| 鸡的守护神是什么菩萨| 什么是天干地支| 一个土一个阜念什么| 人头马是什么酒| 松垮是什么意思| vg是什么意思| 梦见苍蝇很多是什么意思| 征求是什么意思| 盆腔炎什么症状| 婚检女性检查什么项目| 打桩是什么意思| 母亲节要送什么礼物| showroom是什么意思| 伯恩光学是做什么的| 拆线挂什么科| 草字头占读什么| 促甲状腺高会导致什么| 子宫内膜薄有什么影响| 活碱是什么| 知了喜欢吃什么| 男人胡子长得快是什么原因| tao是什么意思| 思密达是什么意思| 炒菜是什么意思| 补气养血吃什么中成药| 室内机漏水是什么原因| 翡翠的五行属性是什么| 胆囊切除后对身体有什么影响| 什么水果补肾| 喝什么可以减肥| 985学校是什么意思| 大熊猫吃什么| 乌龟吃什么蔬菜| hennessy是什么酒价格多少| 娇喘什么意思| 今天什么节日| 橙字五行属什么| 床虱咬了要擦什么药膏| 肠胃感冒吃什么食物| 麻辣拌里面都有什么菜| 操姓氏读什么| 血钾是什么意思| 滋阴降火吃什么药| 黄瓜与什么相克| 墨迹是什么意思| 天天吃玉米有什么好处和坏处| 武则天叫什么名字| 3月17日是什么星座的| 在什么中间| 小孩头疼是什么原因| 太阳最后会变成什么| 黄体酮吃了有什么副作用| 保姆代表什么生肖| 今天属什么生肖老黄历| 建议随诊是什么意思| 手发胀是什么前兆| 什么的冬天| 琥珀是什么颜色| 妈妈的爷爷叫什么| 宫颈ca什么意思| 睡觉喜欢流口水是什么原因| 小孩经常吐是什么原因| 1988年出生是什么命| 2月16日是什么星座| 脚气去医院挂什么科| 老年人反复发烧是什么原因引起的| 肝不好吃什么好| pony是什么意思| 百合什么意思| 拔罐拔出水是什么原因| 朱元璋是什么星座| 胆结石有什么症状有哪些| 僧侣是什么意思| 接骨木莓是什么| 吹气检查胃是检查什么| 五花肉是什么肉| 支原体培养及药敏是检查什么| 狐臭用什么药最好| 心肾不交有什么症状| 0101是什么意思| 2010年是什么年| 什么人什么天| 什么是道德绑架| 山今读什么| 芡实不能和什么一起吃| 能屈能伸是什么生肖| bppv是什么病| 欣喜若狂是什么意思| 临产是什么意思| 经常感觉饿是什么原因| 梦到孩子丢了是什么征兆| jdv是什么牌子| 胰腺炎吃什么水果| 大小脸挂什么科| 1984年属什么| 空囊是什么原因造成的| 直肠炎用什么药效果最好| 摸胸是什么感觉| 早上起来手麻是什么原因| 12月22号是什么星座| 1981年是什么年| 卡西欧手表什么档次| 肠易激综合征吃什么中成药| 乙木的根是什么| 如痴如醉是什么意思| 肺静脉流的是什么血| 肝五行属什么| 水为什么是绿色的| 酉是什么字| 煲鸡汤放什么材料好| 百度Jump to content

海南房地产市场增速持续回落 9月投资再现负增长

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-05.
  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-05. Retrieved 2025-08-05.
  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-05 at the Wayback Machine. Computerworld. Retrieved on 2025-08-05.
  11. ^ tarpc, Google, 2025-08-05, retrieved 2025-08-05
  12. ^ libevent: Main Page. Monkey.org. Retrieved on 2025-08-05.
  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.
胰腺炎是什么病 马齿苋长什么样子 EE什么意思 色达在四川什么地方 四肢发达是什么生肖
牛肉烧什么菜好吃 什么是手性碳原子 吃什么药能来月经 阴虱用什么药物 膝盖不好的人适合什么运动
下午三点到四点是什么时辰 痛风是什么原因引起的 脚趾甲变黑是什么原因 看病人买什么花合适 日本为什么经常地震
转肽酶高是什么原因 宝宝头爱出汗是什么原因 白丝是什么 肝的主要功能是什么 m2是什么意思
双氧水又叫什么名字hcv8jop0ns9r.cn 梦见朋友离婚了是什么意思hcv9jop5ns9r.cn 心脏右束支传导阻滞是什么意思hcv9jop1ns0r.cn 什么的迎春花hcv8jop1ns7r.cn 吃了紧急避孕药会有什么反应hcv7jop9ns9r.cn
水瓶座是什么象hcv8jop9ns5r.cn 两岁宝宝不开口说话是什么原因wzqsfys.com 跳蚤怕什么东西hcv8jop1ns6r.cn 6月3日什么星座hcv8jop3ns0r.cn ppt是什么意思hcv9jop3ns1r.cn
吃桂圆干有什么好处和坏处hcv8jop2ns6r.cn 什么原因引起痛风hcv7jop6ns8r.cn 乳腺导管扩张是什么意思cj623037.com 致青春是什么意思hcv8jop3ns5r.cn 乳腺结节是什么病hcv9jop6ns2r.cn
888是什么意思hcv9jop0ns8r.cn 空调开除湿有什么作用hcv7jop5ns5r.cn 湿热便秘吃什么中成药hcv7jop9ns4r.cn 手掌心痒是什么原因bysq.com 黑枣是什么枣hcv7jop6ns3r.cn
百度 技术支持:蜘蛛池 www.kelongchi.com