Разница между RPC и RMI
Содержание
- Сравнительная таблица
- Определение RPC
- Давайте разберемся, как реализован RPC с помощью следующих шагов:
- Определение RMI
- Вывод
RPC и RMI - это механизмы, которые позволяют клиенту вызывать процедуру или метод с сервера посредством установления связи между клиентом и сервером. Общее различие между RPC и RMI состоит в том, что RPC поддерживает только процедурное программирование тогда как RMI поддерживает объектно-ориентированного программирования.
Другое важное различие между ними заключается в том, что параметры, передаваемые удаленному вызову процедур, состоят из обычные структуры данных, С другой стороны, параметры, передаваемые удаленному методу, состоят из объекты.
- Сравнительная таблица
- Определение
- Ключевые отличия
- Вывод
Сравнительная таблица
Основа для сравнения | RPC | RMI |
---|---|---|
опоры | Процедурное программирование | Объектно-ориентированного программирования |
параметры | Обычные структуры данных передаются в удаленные процедуры. | Объекты передаются удаленным методам. |
КПД | Ниже чем RMI | Больше чем RPC и поддерживается современным подходом к программированию (т.е. объектно-ориентированные парадигмы) |
Накладные расходы | Больше | Менее сравнительно |
Входные параметры обязательны. | да | Не обязательно |
Обеспечение простоты программирования | Высокая | низкий |
Определение RPC
Удаленный вызов процедур (RPC) это функция языка программирования, разработанная для распределенных вычислений и основанная на семантике местная процедура звонки. Это наиболее распространенная форма удаленного обслуживания, и она была разработана как способ абстрагирования механизма вызова процедур для использования между системами, подключенными через сеть. Он похож на механизм IPC, где операционная система позволяет процессам управлять общими данными и взаимодействовать со средой, в которой разные процессы выполняются в отдельных системах и обязательно требуют связи на основе.
Давайте разберемся, как реализован RPC с помощью следующих шагов:
- Клиентский процесс вызывает клиентскую заглушку с параметрами, и его выполнение приостанавливается до завершения вызова.
- Параметры затем переводятся в машинно-независимую форму путем маршалинга через клиентскую заглушку. Затем готовятся, которые содержат представление параметров.
- Чтобы определить личность сайта, клиентская заглушка связывается с сервером имен, на котором существует удаленная процедура.
- Используя протокол блокировки, клиент отправляет запрос на сайт, где существует удаленный вызов процедуры. Этот шаг останавливает клиентскую заглушку, пока он не получит ответ.
- Сайт сервера получает отправленные со стороны клиента и преобразует их в специфический для машины формат.
- Теперь серверная заглушка выполняет вызов на серверной процедуре вместе с параметрами, и серверная заглушка прекращается до завершения процедуры.
- Процедура сервера возвращает сгенерированные результаты в заглушку сервера, и результаты преобразуются в машинно-независимый формат в заглушке сервера и создают содержимое, содержащее результаты.
- Результат отправляется на заглушку клиента, которая преобразуется обратно в формат, специфичный для машины, подходящий для заглушки клиента.
- На последнем клиенте заглушка возвращает результаты клиентскому процессу.
Определение RMI
Удаленный вызов метода (RMI) похож на RPC, но зависит от языка и особенность Java. Потоку разрешено вызывать метод для удаленного объекта. Чтобы сохранить прозрачность на стороне клиента и сервера, он реализует удаленный объект, используя заглушки и скелеты. Заглушка находится у клиента, а для удаленного объекта она работает как прокси.
Когда клиент вызывает удаленный метод, вызывается заглушка для удаленного метода. Клиентская заглушка отвечает за создание и отправку посылки, содержащей название метода и параметры маршалинга, а скелет отвечает за получение посылки.
Скелет демаршализирует параметры и вызывает нужный метод на сервере. Скелет выполняет маршалирование заданного значения (или исключений) вместе с посылкой и отправляет ее клиенту-заглушке. Заглушка собирает возвратную посылку и передает ее клиенту.В Java параметры передаются в методы и возвращаются в виде ссылок. Это может быть проблематично для службы RMI, поскольку не все объекты, возможно, являются удаленными методами. Таким образом, он должен определить, что может быть передано в качестве ссылки, а что нет.
Java использует процесс, названный как сериализация где объекты передаются в качестве значения. Удаленный объект локализуется путем передачи по значению. Он также может передавать объект по ссылке, передавая удаленную ссылку на объект вместе с URL-адресом класса-заглушки. Передача по ссылке ограничивает заглушку для удаленного объекта.
- RPC поддерживает парадигмы процедурного программирования, таким образом, основан на C, а RMI поддерживает парадигмы объектно-ориентированного программирования и основан на Java.
- Параметры, передаваемые удаленным процедурам в RPC, являются обычными структурами данных. Напротив, RMI передает объекты в качестве параметра удаленному методу.
- RPC можно рассматривать как более старую версию RMI, и она используется в языках программирования, которые поддерживают процедурное программирование, и может использовать только метод передачи по значению. В отличие от этого, средство RMI разработано на основе современного подхода к программированию, который может использовать проход по значению или ссылку. Еще одним преимуществом RMI является то, что параметры, передаваемые по ссылке, могут быть изменены.
- Протокол RPC генерирует больше издержек, чем RMI.
- Параметры, передаваемые в RPC, должны быть «в-вне”, Что означает, что значение, передаваемое в процедуру, и выходное значение должны иметь одинаковые типы данных. Напротив, нет принуждения к прохождениюв-внеПараметры в RMI.
- В RPC ссылки не могут быть вероятными, потому что два процесса имеют различное адресное пространство, но это возможно в случае RMI.
Вывод
И RPC, и RMI служат одной и той же цели, но используются в языках, поддерживающих разные парадигмы программирования, поэтому имеют разные особенности.