Рассмотренные ранее методы синхронизации процессов и коммуникаций предполагали использование одного компьютера. Тем не менее часто приложения должны работать в пределах локальной или распределенной сети. Одним из методов реализации взаимодействия является удаленный вызов процедур (remote procedure calls - RPC). Вызов процедуры представляет собой классическую форму синхронной коммуникации: вызывающий процесс передает управление подпроцессу и ждет возвращения результатов. Используя RPC, программисты распределенных приложений могут не учитывать мелких деталей при обеспечении интерфейса с сетью. Транспортная независимость RPC изолирует приложение от физических и логических элементов механизма коммуникаций данных и позволяет ему использовать разнообразие транспортных протоколов.
RPC делает модель вычислений ``клиент - сервер'' более мощной и более простой для программирования. Использование компиляторов протоколов ONC RPCGEN позволяет клиентам прозрачно осуществлять удаленные вызовы через локальный интерфейс процедур.
Как и при обычном вызове функции, при вызове RPC его аргументы передаются удаленной процедуре, и вызывающий процесс ждет ответа, который будет возвращен из этой удаленной процедуры. Порядок действий следующий.
Клиент осуществляет вызов процедуры, которая посылает запрос серверу и ждет ответа. Поток выполнения блокируется, пока не будет получен ответ или не наступит тайм-аут. Когда приходит запрос, сервер вызывает процедуру диспетчеризации, которая выполняет требуемое действие и посылает ответ клиенту. После того, как вызов RPC закончен, программа клиента продолжает выполнение своих действий.
Удаленная процедура уникально идентифицируется тройкой параметров: номер программы, номер версии, номер процедуры. Номер программы идентифицирует группу соотносящихся удаленных процедур, каждая из которых имеет свой уникальный номер. Программа может состоять из одной или более версий. Каждая версия состоит из множества процедур, которые могут быть вызваны удаленно. Номера версии позволяют использовать одновременно несколько версий. Каждая процедура имеет свой номер.
Для разработки приложения RPC необходимо выполнить следующие шаги: