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

Автор: Laura McKinney
Дата создания: 1 Апрель 2021
Дата обновления: 14 Май 2024
Anonim
RPC и REST — в чём разница? Часть 1: RPC
Видео: RPC и REST — в чём разница? Часть 1: RPC

Содержание


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

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

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. Вывод

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

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


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

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

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

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


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

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

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

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

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

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

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

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

Вывод

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