В чем разница между Java RMI и RPC? - PullRequest
155 голосов
/ 28 апреля 2010

Какова реальная разница между Java RMI и RPC?

В некоторых местах я читал, что RMI использует объекты?

Ответы [ 9 ]

130 голосов
/ 28 апреля 2010

RPC основан на C, и, как таковая, имеет семантику структурированного программирования, с другой стороны, RMI - это технология на основе Java, и она ориентирована на объект.

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

RMI выделяется, когда возникает необходимость в разработке чего-то более сложного, чем чисто клиент-серверная архитектура. Распределение объектов по сети очень просто, что позволяет всем клиентам обмениваться данными без явной фиксации отдельных соединений.

44 голосов
/ 28 апреля 2010

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

В RMI повышена прозрачность, а именно благодаря эксплуатации объектов, ссылок, наследования, полиморфизма и исключений, поскольку технология интегрирована в язык.

RMI также более продвинут, чем RPC, что позволяет динамический вызов , где интерфейсы могут изменяться во время выполнения, и адаптация объекта , что обеспечивает дополнительный уровень абстракции.

17 голосов
/ 26 марта 2015

1. Подход:

RMI использует объектно-ориентированную парадигму, в которой пользователь должен знать объект и метод объекта, который он должен вызвать.

RPC не имеет дело с объектами. Скорее, он вызывает определенные подпрограммы, которые уже установлены.

2. Рабочая:

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

RMI делает то же самое, но RMI передает ссылку на объект и вызываемый метод.

RMI = RPC + объектная ориентация

3. Лучше один:

RMI - лучший подход по сравнению с RPC, особенно с более крупными программами, поскольку он обеспечивает более чистый код, который легче идентифицировать, если что-то идет не так.

4. Системные примеры:

Системы RPC: SUN RPC, DCE RPC

Системы RMI: Java RMI, CORBA, Microsoft DCOM / COM +, SOAP (простой протокол доступа к объектам)

10 голосов
/ 01 декабря 2015

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

Удаленный вызов метода (RMI) - это API, который реализует RPC в Java с поддержкой объектно-ориентированных парадигм.

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

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

  3. RPC не зависит от языка в отличие от RMI, который ограничен java

  4. RMI немного медленнее RPC

Взгляните на эту статью для реализации RPC в C

7 голосов
/ 28 апреля 2010

RMI или удаленный вызов метода очень похоже на RPC или Remote Вызов процедуры в том клиенте оба отправляют прокси-объекты (или заглушки) на сервер однако тонкий Разница в том, что RPC на стороне клиента вызывает ФУНКЦИИ через прокси функция и RMI вызывает МЕТОДЫ через функцию прокси. RMI - это считается немного лучше, как это объектно-ориентированная версия RPC.

С здесь .

Для получения дополнительной информации и примеров, посмотрите здесь .

6 голосов
/ 04 мая 2012

Разница между RMI и RPC заключается в том, что:

  • RMI , поскольку имя указывает на удаленный вызов метода: он вызывает метод или объект. И
  • RPC вызывает функцию.
6 голосов
/ 10 августа 2010

Единственное реальное различие между RPC и RMI заключается в том, что в RMI есть объекты: вместо вызова функций через функцию прокси, мы вызываем методы через прокси.

3 голосов
/ 23 октября 2016

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

Java RMI также выполняет то же самое, но немного по-другому. Он использует ссылки на удаленные объекты . Итак, он отправляет ссылку к удаленному объекту вместе с именем метода для вызова. Это лучше, потому что это приводит к более чистому коду в случае больших программ, а также распределение объектов по сети позволяет нескольким клиентам вызывать методы на сервере вместо индивидуального установления каждого соединения .

1 голос
/ 23 марта 2016

RMI или удаленный вызов метода очень похожи на RPC или вызов удаленной процедуры в том, что клиент одновременно отправляет прокси-объекты (или заглушки) на сервер, однако тонкое отличие состоит в том, что RPC на стороне клиента вызывает FUNCTIONS через функцию прокси, а RMI вызывает МЕТОДЫ через функцию прокси. RMI считается немного лучше, поскольку это объектно-ориентированная версия RPC.

...