鸡胸是什么原因引起的| 十二月十四日是什么星座| 木羽念什么| 男人湿气重吃什么药| 平板运动试验阳性是什么意思| 什么样的梦想| 为什么生我| 例假少吃什么能让量多| 眼压高滴什么眼药水| 不饱和脂肪酸是什么意思| 世界上最长的英语单词是什么| 医院有什么科室| 腺样体面容是什么意思| 黑猫警长是什么猫| 九月29号是什么星座| 猪蹄子炖什么好吃| 返流性食管炎用什么药| 汉武帝是什么朝代| 加尿素起什么作用| 胸推是什么| 订单号是什么| 娟五行属什么| 维生素b5又叫什么| 眼圈发黑什么原因| 山药煲汤搭配什么好| 周杰伦是什么星座| 4月4日是什么日子| 癫痫是什么症状| 蛋白糖是什么糖| 脾胃是什么| 什么叫靶向治疗| 劳改是什么意思| 虾不能和什么同吃| 7月26日是什么星座| 七月二十五是什么星座| 夏天吃什么水果最好| 什么什么天什么| 郁金香长什么样子| 大便很细是什么原因| 交配是什么意思| 西米露是什么| 灵芝什么人不能吃| 什么的感受| 什么样的充电宝不能带上飞机| 绝经后子宫内膜增厚是什么原因| 脱脂棉是什么| 高汤是什么意思| 淋巴结是什么东西| 有利有弊是什么意思| 为什么一躺下就头晕目眩| 男人脖子后面有痣代表什么| 什么是挠脚心| 10.31什么星座| 过敏有什么症状| 肾虚吃什么| 控制欲强的人最怕什么| 什么叫逻辑思维| 恶心想吐肚子疼是什么原因| 大校军衔是什么级别| 为什么眼睛老是痒| 一杆进洞叫什么球| 手冲是什么| 六个口是什么字| lively什么意思| 冻感冒了吃什么药| 津液是什么意思| 孩子睡觉出汗多是什么原因| 为什么母乳妈妈会便秘| 长期吃阿司匹林有什么副作用| 一加是什么品牌| 尿正常是什么颜色| 温碧泉属于什么档次| ppm是什么单位| 中国古代四大发明是什么| 什么样的花朵| 晚上肚子疼是什么原因| 什么是鼻息肉| 眼干眼涩眼疲劳用什么眼药水| 中国的国粹是什么| 鞭尸是什么意思| 杜仲配什么补肾最好| 铁皮石斛有什么作用| 我俩太不公平这是什么歌| friday是什么意思| 世袭制是什么意思| 小产后可以吃什么水果| 什么是鸡头米| 飞蚊症是什么引起的| 有趣的灵魂是什么意思| 关晓彤属什么生肖| 清谷天指的是什么| 脾胃虚弱吃什么食物补| 女人吃什么补月牙最快| 九月生日是什么星座| 狗狗吃什么| 父母都是o型血孩子是什么血型| 小猫发烧有什么症状| 五月二十四号是什么星座| tg是什么| 公斤和斤有什么区别| 三月十号是什么星座| 裤裙配什么上衣好看| 先考是什么意思| 金骏眉属于什么茶类| 肛门出血什么原因| 外阴白斑擦什么药| 梦见别人家办丧事是什么意思| 梦见小老鼠是什么征兆| 命悬一线的意思是什么| 鱼眼睛吃了有什么好处| 夏天什么时候最热| 宴字五行属什么| 酸枣仁有什么功效| 脖子上为什么会长丝状疣| 孕妇吃什么是补铁的| 美国报警电话为什么是911| 脖子下面的骨头叫什么| 什么是妊娠| 碱性磷酸酶偏高说明什么问题| ag医学上是什么意思| 夜代表什么生肖| 升天是什么意思| c2驾驶证能开什么车| 王字旁一个玉读什么| 轮回什么意思| 望尘莫及是什么意思| 茯苓有什么功效| 湖北有什么好玩的| 吃什么补血贫血| beyond是什么意思| 涵养是什么意思| 扁平苔藓有什么症状| 大疱性皮肤病是什么病| 梦见猫是什么预兆| 痴女是什么意思| 前列腺增大是什么意思| 多发性脂肪瘤是什么原因造成的| 甲亢是什么病| 氨糖是什么| 香蕉和什么一起吃能减肥| 梦见别人开车撞死人是什么意思| cpi是什么意思啊| 色盲色弱是什么意思| inr是什么意思| 为什么不吃猪肉| 放屁多是什么原因| 风邪是什么意思| 小腿酸软无力是什么原因| 日语一个一个是什么意思| 蓝莓是什么味道| 什么是微创手术| 葫芦代表什么生肖| 车加失读什么| 尿酸高什么原因引起的| 梦见下牙掉了是什么征兆| 小孩拉肚子吃什么药效果好| 黄金桂是什么茶| 8月5日什么星座| 熬夜吃什么对身体好| 寒热错杂吃什么中成药| 焦虑症看什么科| 十二生肖各代表什么花| 荣耀是什么品牌| 肚子疼拉稀是什么原因| 情人眼里出西施是什么心理效应| 教师节送老师什么礼物最好| 吃苹果有什么好处和功效| 病毒性肠炎吃什么药| 戒烟为什么会长胖| 回家心切什么意思| 阿飘是什么意思| 右手大拇指抖动是什么原因| 兰蔻适合什么年龄的人用| 猫在风水上代表什么| 盆腔积液吃什么药好| 深度水解奶粉是什么意思| 属猴和什么属相相克| 六一送女孩子什么礼物| 宝宝便秘吃什么| 孩子拉肚子吃什么食物好| 最小的动物是什么| 胸闷是什么原因引起的| 黄鼻涕是什么类型的感冒| cov是什么意思| 独在异乡为异客是什么节日| 什么可以代替润滑油| 什么能解酒| 慢性支气管炎吃什么药| 豚是什么动物| 宝宝肤专家软膏主要治什么| 活塞是什么意思| 水晶为什么要消磁| 容易受惊吓是什么原因| 参事是什么级别| 布施蚂蚁什么食物最好| 四维彩超主要检查什么| 肠胃型感冒吃什么药| 梦见捉蛇是什么意思| 2049年是什么年| 胆固醇偏高是什么意思| z世代是什么意思| 脾不好吃什么药| 牙龈流血是什么原因| 攒是什么意思| 女生经常手淫有什么危害| 为什么会有同性恋| 脚气是什么菌| 宝宝老是摇头是什么原因| 七嘴八舌是什么生肖| 肝内强回声是什么意思| 可乐鸡翅用什么可乐| 蝈蝈是什么动物| 开火上下结构念什么| 治疗便秘吃什么| 鸦片鱼是什么鱼| 记性不好吃什么药| 心室早复极是什么意思| 什么罗之恋| 硫酸羟氯喹片是治什么病| 迷糊是什么意思| 犯病是什么意思| 寄居蟹吃什么食物| 弓耳念什么| 什么车不能开| 9527是什么梗| 孩子结膜炎用什么眼药水| 韭黄是什么| 脚底发凉是什么原因| 淀粉吃多了有什么危害| 备孕要注意什么| 编程是什么专业| 糖耐量受损是什么意思| 梦见出血是什么征兆| 饭后烧心是什么原因引起的| 艾滋病阴性是什么意思| 形而上学什么意思| 什么是零重力座椅| 什么男什么女的成语| 土耳其浴是什么意思| b什么意思| 距骨在什么位置| 什么自若| 什么火没有烟| 透声差是什么意思| gps是什么意思| 挖空细胞是什么意思啊| 花仙子是什么意思| 饺子什么馅儿最好吃| 吃什么补硒最快最好| 牙齿疼吃什么药| 什么的落日| 仙鹤代表什么生肖| 北京属于什么方向| 2003年出生属什么| 咳嗽吃什么| 食管ca是什么意思| 越南有什么特产| 慢性胃炎可以吃什么水果| 腰突挂什么科| 山地自行车什么牌子好| 入睡难一般是什么原因造成的| 跳蛋什么感觉| 纤维瘤是什么病| 45属什么| 百度Jump to content

慢性盆腔炎吃什么药效果好

From Wikipedia, the free encyclopedia
(Redirected from Remote Procedure Call)
百度 刺探、搬砖需要玩家组队到敌国争夺代表最高品质的绿色资源,过程中会与敌国玩家发生激情对抗,而组队的玩家如果没有获得绿色的砖块或情报绝不回城,由此征途玩家创造出了他们的专属成语---不绿不回。

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.
脚踝水肿是什么原因 yy是什么意思 梦见小猪仔什么意思 黄皮什么时候上市 吃什么水果可以通便
鲨鱼为什么怕海豚 肛门痒擦什么药 脚踝扭伤挂什么科 什么是事实婚姻 半夜三更是什么生肖
玉米属于什么类 梦见手链断了是什么意思 验血脂挂什么科 三个水念什么 04年的猴是什么命
痘痘破了涂什么药膏 梦见捡板栗是什么意思 苋菜什么人不能吃 花胶和什么煲汤最适合 享福是什么意思
hardly什么意思cj623037.com 什么什么不生bysq.com 思维方式是什么意思hcv9jop6ns1r.cn 希望孩子成为什么样的人hcv7jop6ns6r.cn 家是什么生肖hcv9jop4ns5r.cn
口粮是什么意思hcv7jop6ns7r.cn 梦见自己和别人吵架是什么意思hcv8jop8ns9r.cn 密胺是什么材质hcv8jop2ns7r.cn 用盐水漱口有什么好处hcv8jop5ns0r.cn 莲是什么结构的字beikeqingting.com
太阳穴疼吃什么药hcv9jop2ns2r.cn 梦见自己鞋子破了是什么意思hcv9jop2ns8r.cn 支气管扩张什么症状hcv9jop6ns0r.cn 舌系带长有什么影响吗hcv8jop1ns2r.cn 相手蟹吃什么hcv9jop1ns6r.cn
刘晓庆什么星座hcv9jop1ns1r.cn 粉色五行属什么xscnpatent.com 平安顺遂什么意思hcv9jop2ns9r.cn iod什么意思hcv9jop1ns9r.cn 常规血检能查出什么hcv9jop6ns6r.cn
百度