Удаленный вызов процедур (RPC)

Удаленный вызов процедур (RPC) — это протокол, который одна программа может использовать для запроса услуги у программы, расположенной на другом компьютере в сети, без необходимости разбираться в деталях сети. RPC используется для вызова других процессов в удаленных системах, таких как локальная система. Вызов процедуры также иногда называют вызовом функции или вызовом подпрограммы .

RPC использует модель клиент-сервер . Запрашивающая программа — это клиент, а программа, предоставляющая услуги, — это сервер . Подобно обычному или локальному вызову процедуры, RPC — это синхронная операция, требующая приостановки запрашивающей программы до тех пор, пока не будут возвращены результаты удаленной процедуры. Однако использование облегченных процессов или потоков, которые совместно используют одно и то же адресное пространство, позволяет одновременно выполнять несколько RPC.

Язык определения интерфейса (IDL) — язык спецификации, используемый для описания интерфейса прикладного программирования (API) программного компонента — обычно используется в программном обеспечении удаленного вызова процедур. В этом случае IDL обеспечивает мост между машинами на обоих концах связи, которые могут использовать разные операционные системы (ОС) и компьютерные языки.

Процедура сообщения RPC
Когда программные операторы, использующие структуру RPC, компилируются в исполняемую программу, в скомпилированный код включается заглушка, которая действует как представитель удаленного кода процедуры. Когда программа запускается и выполняется вызов процедуры, заглушка получает запрос и пересылает его клиентской программе времени выполнения на локальном компьютере. При первом вызове клиентской заглушки она связывается с сервером имен, чтобы определить транспортный адрес, по которому находится сервер.

Программа среды выполнения клиента знает, как обращаться к удаленному компьютеру и серверному приложению, и отправляет сообщение по сети, которое запрашивает удаленную процедуру. Точно так же сервер включает исполняющую программу и заглушку, которая взаимодействует с самой удаленной процедурой. Протоколы ответа-запроса возвращаются таким же образом.

Модели RPC и альтернативные методы для взаимодействия клиент-сервер
Существует несколько моделей RPC и реализаций распределенных вычислений . Популярной моделью и реализацией является распределенная вычислительная среда ( DCE ) Open Software Foundation (OSF ). Институт инженеров по электротехнике и электронике ( IEEE ) определяет RPC в своей спецификации вызова удаленных процедур ISO, ISO / IEC CD 11578 N6561, ISO / IEC, ноябрь 1991 г.

RPC охватывает транспортный уровень и уровень приложений в модели сетевого взаимодействия открытых систем ( OSI ). RPC упрощает разработку приложения, которое включает несколько программ, распределенных в сети.

Альтернативные методы взаимодействия клиент-сервер включают организацию очереди сообщений и усовершенствованную межпрограммную связь IBM (APPC).

Как работает RPC?
Когда вызывается удаленный вызов процедуры, вызывающая среда приостанавливается, параметры процедуры передаются по сети в среду, в которой должна выполняться процедура, а затем процедура выполняется в этой среде.

Когда процедура завершается, результаты передаются обратно в вызывающую среду, где выполнение возобновляется, как если бы оно возвращалось из обычного вызова процедуры.

Во время RPC выполняются следующие шаги:

Клиент вызывает клиентскую заглушку. Вызов представляет собой вызов локальной процедуры с параметрами, помещенными в стек обычным способом.
Клиентская заглушка упаковывает параметры процедуры в сообщение и выполняет системный вызов для отправки сообщения. Упаковка параметров процедуры называется маршалингом .
Локальная ОС клиента отправляет сообщение с клиентского компьютера на удаленный сервер.
Серверная ОС передает входящие пакеты на серверную заглушку.
Заглушка сервера распаковывает параметры из сообщения — это называется демаршалингом .
Когда серверная процедура завершается, она возвращается к серверной заглушке, которая маршалирует возвращаемые значения в сообщение. Затем заглушка сервера передает сообщение на транспортный уровень.
Транспортный уровень отправляет полученное сообщение обратно на клиентский транспортный уровень, который возвращает сообщение клиентской заглушке.
Клиентская заглушка неупорядочивает возвращаемые параметры, и выполнение возвращается вызывающей стороне.


Типы RPC
Существует пять типов RPC:

Обычный метод работы, при котором клиент выполняет вызов и не продолжает работу до тех пор, пока сервер не вернет ответ.
Клиент звонит и продолжает свою обработку. Сервер не отвечает.
Средство для отправки нескольких клиентских неблокирующих вызовов в одном пакете.
У клиентов RPC есть средство широковещательной рассылки, т. Е. Они могут отправлять сообщения на множество серверов, а затем получать все полученные ответы.
Клиент делает неблокирующий вызов клиент / сервер; сервер сигнализирует о завершении вызова путем вызова процедуры, связанной с клиентом.


Преимущества удаленного вызова процедур
К преимуществам удаленного вызова процедур можно отнести следующее:

помогает клиентам общаться с серверами посредством традиционного использования вызовов процедур на языках высокого уровня;
может использоваться как в распределенной, так и в локальной среде;
поддерживает процессно-ориентированные и поточно-ориентированные модели;
скрывает внутренний механизм передачи сообщений от пользователя;
требует минимальных усилий для переписывания и повторной разработки кода;
обеспечивает абстракцию , т. е. характер передачи сообщений по сети скрыт от пользователя; и
опускает многие уровни протокола для повышения производительности.


Недостатки RPC
Некоторые из недостатков RPC включают следующее:

Клиент и сервер используют разные среды выполнения для своих соответствующих подпрограмм, и использование ресурсов, например файлов, также является более сложным. Следовательно, системы RPC не подходят для передачи больших объемов данных.
RPC очень уязвим для сбоев, потому что он включает в себя систему связи, другую машину и другой процесс.
Единого стандарта для RPC не существует; это может быть реализовано множеством способов.
RPC основан только на взаимодействии и, как таковой, не предлагает гибкости, когда дело касается аппаратной архитектуры.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *