查血常规能查出什么| cc是什么意思啊| 银杏叶提取物治什么病| 手腕疼去医院挂什么科| 从胃到小腹连着疼是什么原因| 嗜酸性肉芽肿是什么病| 经常头疼是什么原因| 吕洞宾属什么生肖| 高颜值是什么意思| 唇炎抹什么药膏最有效| 半身不遂是什么意思| 云南属于什么地区| 什么样的山| 耳鸣吃什么药最好| 外阴白斑用什么药最好| 手术后拆线挂什么科| 婴儿吃什么奶粉好呢| 日主是什么意思| 小五行属性是什么| 211大学是什么意思| 藿香正气水有什么作用| 医学ns是什么意思| 天天喝牛奶有什么好处| 颈椎生理曲度变直是什么意思| 徐州有什么好吃的美食| 什么蚂蚁有毒| 岁月静好什么意思| 煎中药用什么容器最好| 什么叫八字| 颈椎属于什么科室| 高血糖适合吃什么主食| 口什么腹什么| 高血压看什么科室| 看脑部挂什么科| 禳是什么意思| 妄想什么意思| 猫咪睡姿代表什么图解| 调经吃什么药效果最好| 金酒属于什么酒| b驾照能开什么车| 经常做噩梦是什么原因| 部长什么级别| 乙状结肠腺瘤是什么病| 小便有点刺痛是什么原因引起的| 乐五行属什么| 处女是什么| 祭奠用什么花| 什么东西在倒立之后会增加一半| 86属什么生肖| 补肺养肺吃什么食物最好| 阴囊湿疹长什么样图片| rv是什么品牌| 乙亥五行属什么| 铁低的原因是什么| 中暑吃什么| 氯丙嗪是什么药| 红眼鱼是什么鱼| 左灯右行什么意思| 阴囊潮湿吃什么| 房子风水主要看什么| 猜疑是什么意思| 梦到被蛇咬是什么意思周公解梦| 淋巴细胞百分比偏高是什么原因| 为什么手上会长小水泡| 风光秀丽的什么| 万里长城是什么生肖| 跑马了是什么意思| 扎是什么意思| aupres是什么牌子化妆品| 琀是什么意思| 三个山是什么字| 脾肾阴虚有什么症状| 长脸型适合什么样的发型| 什么样的人爱长结节| 什么治便秘| 舐犊是什么意思| 想吃甜食是身体缺什么| pt是什么元素| 金字旁目字读什么| 属羊人佩戴什么旺自己| 鼻衄是什么意思| 鱼肉百姓什么意思| adr是什么激素| 纯色是什么颜色| 梦见龙卷风是什么预兆| 四肢发麻是什么原因| 鱼豆腐是什么做的| 月经期间吃什么水果好| 湿热是什么意思| 阳亢是什么意思| 小炒皇是什么菜| 977是什么意思| 前庭神经炎吃什么药| 叶酸有什么好处| 洒水车的音乐是什么歌| 反酸是什么症状| 什么地画| 三教九流什么意思| 蜂蜜吃有什么好处| 美帝是什么意思| 每天早上起来口苦是什么原因| 鼻子经常流鼻涕是什么原因| 荒芜是什么意思| 刘亦菲为什么不结婚| 口大是什么字| 鸡屁股叫什么| 皮肤瘙痒用什么药| 毛主席的女儿为什么姓李| 十二指肠胃溃疡吃什么药| 嗓子疼看什么科室| 脚气用什么药膏| 眼角痒是什么原因| 医生助理是做什么的| 伶字五行属什么| 支那人是什么意思| 米加白念什么| 云南白药植物长什么样| 咽炎吃什么消炎药最好| 土霉素喂鸡有什么作用| 身份证最后一位x是什么意思| 择偶标准是什么意思| 乙肝五项一五阳性什么意思| 减肥可以喝什么饮料| 秦二世为什么姓胡| 手肘发黑是什么原因| 我国计划生育什么时候开始| 纳豆是什么东西| 米是什么结构| 心情沉重是什么意思| 凉拌什么菜好吃| 口苦口干吃什么药最好| 辗转反侧什么意思| 腹泻恶心想吐是什么原因| 热伤风吃什么| 玫瑰和月季有什么区别| 碳14是检查什么的| 小狗感冒症状是什么样的| 炖汤用什么鸡| 七月六号是什么星座| 减肥什么时候喝牛奶| 胃老是恶心想吐是什么原因| 一什么亮光| 日间病房是什么意思| 甘油三酯高是什么病| 阿莫西林吃多了有什么副作用| 凤凰长什么样| 医是什么结构的字| 肾在什么位置图片| 骨髓不造血是什么病| 小孩晚上睡觉流口水是什么原因| amh是什么意思| 财多身弱什么意思| 热感冒流鼻涕吃什么药| 颠勺是什么意思| 脖子爱出汗是什么原因| xl代表什么尺码| 吃什么养胃又补胃| 海绵体充血不足吃什么药| emma什么意思| 洗牙后要注意什么| 四月十九是什么星座| 治股癣用什么药最好| 伟哥有什么副作用| 就诊卡号是什么| 有肝病的人吃什么好| 六月六日是什么节日| 前列腺炎要吃什么药| 七月十七是什么星座| 凌晨三点醒是什么原因| 南极被称为什么| 什么地回答| 5月什么星座| 妯娌什么意思| 单独粘米粉能做什么| 老公的妈妈叫什么| 三杯鸡为什么叫三杯鸡| 女字旁一个朱念什么| 犯困是什么原因引起的| 什么是党的性质和宗旨的体现| 文五行属什么| 人间炼狱是什么意思| 五六天不拉大便是什么原因| 记过属于什么处分| 炸酱面用什么酱| 脑门出汗多是什么原因| 生日送什么花合适| 孩子感冒咳嗽吃什么药| 粉丝是什么意思| 感情里什么叫偏爱| 口苦挂什么科最好| 凡人修仙传什么时候写的| 亲什么意思| 泰山石敢当什么意思| 出家人不打诳语是什么意思| 牙疼吃什么止疼药| 妹妹你坐船头是什么歌| 72岁属什么生肖| 幼犬拉稀吃什么药最好| 百合有什么功效| 红艳煞什么意思| asmr是什么| elle是什么档次的牌子| 犀牛吃什么食物| 香奶奶是什么牌子| 孕初期需要注意些什么| 梦见吃桃子是什么预兆| 湉字五行属什么| 痤疮是什么东西| 下半年有什么节日| 肌酐低是什么原因| 怀孕吃什么药可以流掉| 女性黄体期是什么意思| 喝中药尿黄是什么原因| 肚子疼用什么药好| 想吃肉是身体缺什么| 刘五行属什么| 桥本甲状腺炎吃什么药| pwi是什么意思| 梦见生小孩是什么征兆| 舌头麻是什么原因| 去香港需要办理什么证件| 尿黄尿味大难闻是什么原因| 为什么医生说直肠炎不用吃药| 一个厂一个人念什么| 女人吃什么补充胶原蛋白| 来忘掉错对来怀念过去是什么歌| 化疗为什么要剃光头| 胆红素高说明什么| 胆汁酸高吃什么降得快| 痛风都有什么症状| 炸薯条用什么淀粉| 男人前列腺在什么位置| 入伏天是什么意思| 尿液臭味很重什么原因| x58主板配什么cpu| 脐炎用什么药| 头晕目眩是什么病的征兆| 口业是什么意思| 做水果捞用什么酸奶好| 嘶哑什么意思| 千呼万唤是什么生肖| 石榴花什么时候开| 孕吐是什么原因造成的| 什么叫轻断食| 梦见很多蜜蜂是什么意思| 怡五行属性是什么| .什么意思| 吃什么死的比较舒服| 什么的城市| 招待是什么意思| 怀孕一周有什么症状| 哮喘吃什么药管用| 血糖高吃什么主食好| 川崎病是什么原因引起的| b和o型血生的孩子是什么血型| 急性胰腺炎是什么病| 烟酰胺有什么用| 饭中吃药是什么时候吃| 北宋六贼为什么没高俅| 谷草转氨酶偏低是什么意思| 圈层是什么意思| 欢愉是什么意思| 免疫力低吃什么| 新疆是什么民族| 百度Jump to content

五月到市区人民广场赏“花海” 五一期间部分开放

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-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.
低蛋白血症吃什么最快 独立户口需要什么条件办理 摆地摊卖什么最赚钱而且很受欢迎 蛇喜欢吃什么食物 什么叫修辞手法
阿司匹林是什么 倒贴是什么意思 鸽子炖什么 鱼胶是什么东西 正常的尿液是什么颜色
乳糜血是什么意思 吃党参有什么好处 腹泻吃什么药最有效 脑梗什么症状 为什么熊猫是国宝
肠道炎有什么症状 博字五行属什么 湿疹是什么症状图片 字形是什么意思 乌鱼蛋是什么
吃芒果后不能吃什么hcv8jop4ns2r.cn 怀孕初期需要注意什么hcv8jop6ns1r.cn emba是什么hcv9jop3ns0r.cn 检察院是做什么的hcv8jop5ns1r.cn 子宫形态不规则是什么意思hcv9jop4ns1r.cn
人头马是什么酒cl108k.com 皮下脂肪瘤挂什么科hcv8jop5ns8r.cn 05是什么生肖hcv9jop2ns9r.cn 男人补身体吃什么好hcv9jop6ns6r.cn 右眼跳是什么兆头hcv8jop7ns3r.cn
小孩头晕是什么原因jasonfriends.com 隔离霜和粉底液有什么区别inbungee.com 早晨起床手肿胀是什么原因hcv7jop4ns8r.cn 女生什么时候最容易怀孕hcv9jop2ns8r.cn 火克什么hcv7jop7ns3r.cn
心得安是什么药hcv8jop9ns6r.cn 伏特加兑什么饮料好喝hcv7jop6ns1r.cn 汇总压缩是什么意思cl108k.com 宝宝拉肚子能吃什么hcv8jop5ns7r.cn 小狗的尾巴有什么作用hcv8jop4ns0r.cn
百度