


Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Remote Procedure Call (RPC) is a mechanism that allows distributed applications to communicate with each other across a network, as if they were running on the same machine. It is a fundamental building block of modern distributed systems, allowing programs to transparently invoke functions or methods on a remote machine, without the need for the caller to have any knowledge of the underlying network protocols or details.
Typology: Lecture notes
1 / 4
This page cannot be seen from the preview
Don't miss anything!



As was mentioned in Chapter 2, the idea of a remote procedure call (RPC) represents a significant intellectual advance in distributed computing with the aim of achieving a high level of distribution transparency and making the programming of distributed systems look similar, if not identical, to conventional programming. By extending the abstraction of a procedure call to distributed contexts, this unification is accomplished in a fairly straightforward manner. Particularly with RPC, it is possible to invoke distant machine processes as if they were local address space procedures. Hence, crucial components of distribution, such as the encoding and decoding of arguments and results, the transmission of messages, and the preservation of the necessary semantics for the procedure call, are hidden by the underlying RPC system. This notion was initially developed by Birrell and Nelson [1984] and opened the way for many of the innovations in distributed systems programming employed today.
We examine three topics that are crucial to comprehending RPC systems before examining their implementation:
Programming with interfaces The majority of contemporary programming languages offer a way to structure a program as a collection of interconnected modules. Procedure calls between modules or direct access to the variables in another module are two ways that modules might communicate with one another. Each module has an explicit interface established in order to govern potential interactions between them. The procedures and variables that may be accessible from other modules are specified in a module's interface. When a module is implemented, all information about it outside what can be accessed through its interface is hidden. The implementation of the module may be modified without having any impact on the module's users as long as its interface stays the same. Interfaces in distributed systems: The modules of a distributed program might function as independent processes. Particularly under the client-server architecture, each server makes a set of operations accessible to clients. For example, a file server might provide protocols for reading and writing files. The specification of the procedures provided by a server, which specifies the kinds of arguments used in each operation, is referred to as a service interface. Programming using interfaces in distributed systems has a variety of advantages because of the crucial distinction between interface and implementation: