Рекомендуем, 2020

Выбор редакции

Разница между RPC и RMI

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

Другое важное различие между ними заключается в том, что параметры, передаваемые удаленному вызову процедур, состоят из обычных структур данных . С другой стороны, параметры, передаваемые удаленному методу, состоят из объектов .

Сравнительная таблица

Основа для сравненияRPCRMI
опорыПроцедурное программирование
Объектно-ориентированное программирование
параметрыОбычные структуры данных передаются в удаленные процедуры.Объекты передаются удаленным методам.
КПДНиже чем RMIБольше чем RPC и поддерживается современным подходом к программированию (т.е. объектно-ориентированные парадигмы)
Накладные расходыБольше
Менее сравнительно
Входные параметры обязательны.даНе обязательно
Обеспечение простоты программирования
Высоко
низкий

Определение RPC

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

Давайте разберемся, как реализован RPC с помощью следующих шагов:

  • Клиентский процесс вызывает клиентскую заглушку с параметрами, и его выполнение приостанавливается до завершения вызова.
  • Параметры затем переводятся в машинно-независимую форму путем маршалинга через клиентскую заглушку. Затем готовится сообщение, содержащее представление параметров.
  • Чтобы определить личность сайта, клиентская заглушка связывается с сервером имен, на котором существует удаленная процедура.
  • Используя протокол блокировки, клиентская заглушка отправляет сообщение на сайт, где существует удаленный вызов процедуры. Этот шаг останавливает клиентскую заглушку, пока он не получит ответ.
  • Сайт сервера получает сообщение, отправленное со стороны клиента, и преобразует его в формат, специфичный для компьютера.
  • Теперь серверная заглушка выполняет вызов на серверной процедуре вместе с параметрами, и серверная заглушка прекращается до завершения процедуры.
  • Процедура сервера возвращает сгенерированные результаты в заглушку сервера, и результаты преобразуются в независимый от машины формат на заглушке сервера и создают сообщение, содержащее результаты.
  • Сообщение с результатом отправляется на заглушку клиента, которая преобразуется обратно в формат, специфичный для машины, подходящий для заглушки клиента
  • На последнем клиенте заглушка возвращает результаты клиентскому процессу.

Определение RMI

Удаленный вызов метода (RMI) похож на RPC, но зависит от языка и является функцией Java. Потоку разрешено вызывать метод для удаленного объекта. Чтобы сохранить прозрачность на стороне клиента и сервера, он реализует удаленный объект, используя заглушки и скелеты. Заглушка находится у клиента, а для удаленного объекта она работает как прокси.

Когда клиент вызывает удаленный метод, вызывается заглушка для удаленного метода. Клиентская заглушка отвечает за создание и отправку посылки, содержащей название метода и параметры маршалинга, а скелет отвечает за получение посылки.

Скелет демаршализирует параметры и вызывает нужный метод на сервере. Скелет выполняет маршалирование заданного значения (или исключений) вместе с посылкой и отправляет ее клиентской заглушке. Заглушка собирает возвратную посылку и отправляет ее клиенту.

В Java параметры передаются в методы и возвращаются в виде ссылок. Это может быть проблематично для службы RMI, поскольку не все объекты, возможно, являются удаленными методами. Таким образом, он должен определить, что может быть передано в качестве ссылки, а что нет.

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

Ключевые различия между RPC и RMI

  1. RPC поддерживает парадигмы процедурного программирования, таким образом, основан на C, а RMI поддерживает парадигмы объектно-ориентированного программирования и основан на Java.
  2. Параметры, передаваемые удаленным процедурам в RPC, являются обычными структурами данных. Напротив, RMI передает объекты в качестве параметра удаленному методу.
  3. RPC можно рассматривать как более старую версию RMI, и она используется в языках программирования, которые поддерживают процедурное программирование, и может использовать только метод передачи по значению. В отличие от этого, средство RMI разработано на основе современного подхода к программированию, который может использовать проход по значению или ссылку. Еще одним преимуществом RMI является то, что параметры, передаваемые по ссылке, могут быть изменены.
  4. Протокол RPC генерирует больше издержек, чем RMI.
  5. Параметры, передаваемые в RPC, должны быть « in-out », что означает, что значение, передаваемое в процедуру, и выходное значение должны иметь одинаковые типы данных. Напротив, в RMI нет обязательной передачи параметров «вход -выход ».
  6. В RPC ссылки не могут быть вероятными, потому что два процесса имеют различное адресное пространство, но это возможно в случае RMI.

Заключение

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

Top