- DevOps with Kubernetes
- Hideto Saito Hui Chuan Chloe Lee Cheng Yang Wu
- 415字
- 2021-07-02 13:41:44
Remote procedure call
In fact, dividing an application into small pieces and connecting them via a network was first attempted back in the 1990s, when Sun Microsystems introduced the Sun Remote Procedure Call (SunRPC). This allows you to use a module remotely. One of most popular implementation is Network File System (NFS). The NFS client and the NFS server can communicate over the network, even if the server and the client use different CPUs and OSes.
Some programming languages also support RPC-style functionality. UNIX and the C language have the rpcgen tool, which generates a stub code that contains some complicated network communication code. The developer can use this over the network to avoid difficult network-layer programming.
Java has the Java Remote Method Invocation (RMI), which is similar to the Sun RPC, but specific to the Java language. The RMI Compiler (RMIC) generates the stub code that connects remote Java processes to invoke the method and return a result. The following diagram shows the procedure flow of the Java RMI:

Objective C has a distributed object and .NET has remoting, both of which work in a similar fashion. Most modern programming languages have RPC capabilities out of the box. These RPC designs are capable of dividing a single application into multiple processes (programs). Individual programs can have separate source code repositories. While the RPC designs worked well, machine resources (CPU and memory) were limited during the 1990s and early 2000s. Another disadvantage was that the same programming language was intended to be used throughout and these designs were intended to be used for a client/server model architecture, rather than a distributed architecture. In addition, there was less security consideration when these designs were developed, so they are not recommended to be used over a public network.
In the early 2000s, initiative web services that used SOAP (HTTP/SSL) as data transport were developed. These used XML for data presentation and the Web Services Description Language (WSDL) to define services. Then, Universal Description, Discovery, and Integration (UDDI) was used as the service registry to look up a web services application. However, as machine resources were not plentiful at the time and due to the complexity of programming and maintaining web services, this was not widely accepted by developers.
- Magento 2 Theme Design(Second Edition)
- 樂高機(jī)器人設(shè)計(jì)技巧:EV3結(jié)構(gòu)設(shè)計(jì)與編程指導(dǎo)
- Ray分布式機(jī)器學(xué)習(xí):利用Ray進(jìn)行大模型的數(shù)據(jù)處理、訓(xùn)練、推理和部署
- Visual Basic程序設(shè)計(jì)教程
- MATLAB定量決策五大類問題
- Python程序設(shè)計(jì)與算法基礎(chǔ)教程(第2版)(微課版)
- 移動(dòng)增值應(yīng)用開發(fā)技術(shù)導(dǎo)論
- 從0到1:HTML5 Canvas動(dòng)畫開發(fā)
- Python機(jī)器學(xué)習(xí)與量化投資
- Laravel Design Patterns and Best Practices
- Python Penetration Testing Essentials
- 透視C#核心技術(shù):系統(tǒng)架構(gòu)及移動(dòng)端開發(fā)
- 大話程序員:從入門到優(yōu)秀全攻略
- 面向?qū)ο蠓治雠c設(shè)計(jì)(第3版)
- Eclipse開發(fā)(學(xué)習(xí)筆記)