清明上河图描绘的是什么季节的景象| 61年属什么| 什么变什么化| 翡翠是什么| 半夜三更是什么生肖| 拉新是什么意思| 耳朵后面痒是什么原因| 征字五行属什么| 肾囊肿有什么症状表现| 外阴白斑用什么药最好| 拉肚子为什么肛门痛| 白天咳嗽晚上不咳嗽是什么原因| 处cp是什么意思| 芙蓉是什么| 福州有什么好玩的地方| 乙肝表面抗体偏高是什么意思| hpv去医院挂什么科| 臻字的意思是什么| 哕是什么意思| 道士是什么生肖| 什么食物对心脏好| 父亲节送什么花| 生茶和熟茶有什么区别| 反乌托邦什么意思| pbc是什么| 毛周角化症用什么药膏| 看淡一切对什么都没兴趣| 艾滋病前期有什么症状| 白事随礼钱有什么讲究| 梦见割草是什么意思| 氯硝西泮片是什么药| 内膜薄吃什么补得最快| 梅花表属于什么档次| 伤心的反义词是什么| 中性粒细胞低吃什么药| 一什么麦子| ra是什么病| 门槛什么意思| 毛泽东什么时候死的| 无非是什么意思| 肾气不足是什么原因| 指甲是白色的是什么原因| 丰盈是什么意思| 惨无人道是什么意思| 双手脱皮是什么原因引起的| 意淫是什么意思| 世界上最贵的东西是什么| 海底轮是什么意思| 矿泉水敷脸有什么作用| 素鸡是什么做的| 夫妻备孕检查挂什么科| 现在执行死刑用什么方法| 入赘是什么意思| 鹦鹉鱼能和什么鱼混养| 鑫字属于五行属什么| 最快的减肥运动是什么| 空鼻症是什么| 荨麻疹吃什么药最好| 夏枯草长什么样子| 茶叶有什么功效| 资产负债率高说明什么| 孩子口臭是什么原因| 什么的羊群| 妹控是什么意思| 查甲状腺挂什么科| 弹性工作制是什么意思| 儿童脾胃不好吃什么调理脾胃| 梦见自己流产了是什么征兆| 什么是绿茶女| 为什么每天晚上睡觉都做梦| 爸爸的哥哥叫什么| 发呆是什么意思| 遗憾是什么| 为情所困是什么意思| torch是什么意思| 朋友是什么意思| 俊五行属什么| 身上经常出汗是什么原因| lac是什么意思| 花生什么时候种| 井底之蛙的寓意是什么| 穿什么衣服| 心血管病人吃什么最好| 什么品牌的笔记本好| 野生甲鱼吃什么| 小孩流鼻涕吃什么药| 散佚是什么意思| 女人依赖男人说明什么| 纳财适合做什么| wm是什么牌子| 985是什么| 玄关是什么位置| 县长什么级别干部| 手足口吃什么药| 梦见孩子被蛇咬是什么意思| 血糖忽高忽低是什么原因| 什么是豆制品| 法警是什么编制| 靓女是什么意思| 什么水果含铁| 11月1日是什么星座| 活水是什么意思| 酒喝多了喝什么解酒| 膝盖背面叫什么| 大脸适合什么发型| 黄丫头是什么鱼| 见干见湿是什么意思| 心脏疼吃什么药效果好| 2月21日什么星座| 1987年属什么今年多大| 为什么肚子疼| 孕妇梦见鬼是什么预兆| fl是胎儿的什么| 公鸡的尾巴有什么作用| 一柱擎天什么意思| 小孩自闭症有什么表现| 左肺下叶钙化灶是什么意思| 肺部结节有什么症状| 甲状旁腺激素高吃什么药| 古代新疆叫什么| 东宫是什么意思| 爱吃酸的人是什么体质| 看肝挂什么科| 一直打嗝吃什么药| 马跟什么生肖最配| 胃不舒服可以吃什么水果| 手麻了是什么原因| npc是什么意思| 大便特别臭是什么原因| 无是什么意思| 龙眼是什么| 面基是什么意思啊| 肾阴虚是什么原因造成的| 巴图是什么意思| 警察是什么编制| 175是什么码| 又什么又什么的葡萄| 为什么蚊子不咬我| 什么什么泪下| 211大学是什么意思| 10月7号是什么星座| 耳朵里痒是什么原因| 阴阳八卦是什么生肖| 什么是跑马| 吃什么能让阴茎更硬| 眼白发红是什么原因| 喉结不明显的男生是什么原因| 蜱虫咬人后有什么症状| 温水煮青蛙什么意思| 对策是什么意思| 怀孕两个月出血是什么原因| 爱是什么| 脚后跟疼挂什么科| 汉武帝属什么生肖| 弱精症有什么症状表现| 什么回大什么| 胜字五行属什么| 咳嗽喝什么药| 为什么喝咖啡会心慌| 家里消毒杀菌用什么好| 厥阴病是什么意思| 龙生九子是什么生肖| 吃什么东西可以补血| 鸡肚是什么部位| 什么的劝告| 王字旁一个行念什么| 考试用什么笔| 三月20号是什么星座| 戴玉有什么好处| 呲牙是什么意思| 椴树是什么树| 耳鸣需要做什么检查| durex什么意思| 世界上最硬的东西是什么| 什么是反流性咽喉炎| 为什么家里有蟑螂| hold不住是什么意思| 水瓶座女生和什么星座男生最配| 痛包是什么| 阴道放气是什么原因| 风寒吃什么药| ube手术是什么意思| 吃什么水果对肝好| 什么是畸胎瘤| 水泥烧伤皮肤用什么药| 办理港澳通行证需要什么证件| 肚子咕噜咕噜响是什么原因| 为什么转氨酶会偏高| 什么是微单相机| 牛肉不能和什么食物一起吃| 双侧上颌窦炎是什么病| 小恙是什么意思| 什么是主食| 中暑喝什么好| 黄疸高是什么原因| 心脏早搏什么症状| 网络cp是什么意思| 羊水透声欠佳什么意思| 拖什么东西最轻松| 不可什么什么| 为什么尿是红色的| 手筋痛是什么原因| 嘴苦是什么原因| 手背出汗是什么原因| 肠胃不好吃什么药好| 人为什么会长痔疮| 骨质密度不均匀是什么意思| 一般什么人容易得甲亢| 什么水果有助于减肥| 海带属于什么类| 医保自费是什么意思| 情人节什么时候| 雌激素是什么东西| 徐州有什么好吃的美食| 新生儿什么时候上户口| 五海瘿瘤丸主要治什么病| 双眼屈光不正是什么意思| 九加虎念什么| 疱疹是什么样子的| 吃什么东西可以变白| 指标到校是什么意思| 真性情是什么意思| 姨妈可以吃什么水果| 涉黑是什么意思| 茶叶过期了有什么用途| 小狗拉肚子吃什么药| 操是什么意思| 舒畅的舅舅是做什么的| 口水多是什么原因| 脐疝是什么| 血清铁蛋白是检查什么| 什么情况需要查凝血| 木命的人适合佩戴什么首饰| 四时是什么时辰| 吃什么降血糖| 尕尕是什么意思| 牛角尖是什么意思| 鱼龙混杂什么意思| 什么牌空调好用又省电| 利是是什么意思| 杭州落户需要什么条件| 梦见老宅是什么意思| 电疗有什么作用和功效| 七月份有什么节日吗| rmb是什么货币| 绿幽灵五行属什么| 去疤痕挂什么科| 鸡叫是什么时辰| 白术有什么作用| 马虎是什么意思| 附子理中丸治什么病| 超声科是什么科室| 婠是什么意思| 漏尿是什么原因造成的| 一朝一夕是什么意思| 十月九号什么星座| 经常吃杏仁有什么好处| 多吃什么可以长头发| 无纺布是什么材料做的| 艾滋病阳性是什么意思| 百香果是什么季节的| 背上长痘痘是什么原因| 女生腋毛多是什么原因| 右上眼皮跳是什么预兆| 百度Jump to content

关于印发《高中阶段教育普及攻坚计划(2017...

From Wikipedia, the free encyclopedia
百度         苏-35战机亮剑增强空军远程远海作战能力    战巡南海的空军战机中,具备制空作战和对地、海面目标精确打击能力的苏-35战机不断亮剑。

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-07.
  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-07. Retrieved 2025-08-07.
  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-07 at the Wayback Machine. Computerworld. Retrieved on 2025-08-07.
  11. ^ tarpc, Google, 2025-08-07, retrieved 2025-08-07
  12. ^ libevent: Main Page. Monkey.org. Retrieved on 2025-08-07.
  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.
00年是什么年 精分是什么意思 白带增多是什么原因 hg是什么单位 为什么睡觉磨牙
庄子是什么学派 徒刑是什么意思 手机电池是什么电池 电商属于什么行业 大眼角痒用什么眼药水
杠杆炒股是什么意思 吃什么容易排大便 出片是什么意思 11月8日是什么星座 临聘人员是什么意思
自愈什么意思 万足读什么 什么样的你 pa是什么材质 下巴痘痘反复长是什么原因
磨牙缺什么jiuxinfghf.com 梦见妯娌是什么意思hcv9jop4ns6r.cn 标准是什么意思chuanglingweilai.com handmade是什么牌子hcv9jop1ns2r.cn span是什么意思hcv9jop0ns8r.cn
淋巴细胞绝对值偏高是什么原因hcv9jop5ns4r.cn CRL是胎儿的什么意思hcv7jop7ns2r.cn 意识是什么意思hcv9jop2ns4r.cn 夏天手上长小水泡是什么原因hcv9jop0ns7r.cn 乾卦代表什么hcv8jop3ns6r.cn
癞皮狗是什么意思hcv9jop4ns4r.cn 应景是什么意思hcv8jop7ns1r.cn 月经期头晕是什么原因hcv8jop9ns5r.cn 副词什么意思imcecn.com 红十字会是干什么的bfb118.com
为什么女人阴唇会变大hcv8jop9ns2r.cn 什么东西补肾最好hcv8jop8ns3r.cn 起痱子是什么原因hcv9jop1ns7r.cn 健康证都查什么传染病hcv8jop0ns2r.cn 吹空调咳嗽吃什么药hcv8jop2ns7r.cn
百度