Ответы:
RPC основан на C, и, как таковой, он имеет семантику структурированного программирования, с другой стороны, RMI - это технология на основе Java, и она ориентирована на объект.
С помощью RPC вы можете просто вызывать удаленные функции, экспортированные на сервер, в RMI вы можете иметь ссылки на удаленные объекты и вызывать их методы, а также передавать и возвращать больше ссылок на удаленные объекты, которые могут быть распределены между многими экземплярами JVM, так что это намного более мощный ,
RMI выделяется, когда возникает необходимость в разработке чего-то более сложного, чем чисто клиент-серверная архитектура. Распределение объектов по сети очень просто, что позволяет всем клиентам обмениваться данными без необходимости явно фиксировать отдельные соединения.
Основное различие между RPC и RMI состоит в том, что RMI включает объекты . Вместо того, чтобы вызывать процедуры удаленно с помощью прокси- функции , мы используем прокси- объект .
RMI обеспечивает большую прозрачность, а именно благодаря использованию объектов, ссылок, наследования, полиморфизма и исключений, поскольку технология интегрирована в язык.
RMI также является более продвинутым, чем RPC, что позволяет выполнять динамический вызов , когда интерфейсы могут изменяться во время выполнения, и адаптацию объектов , что обеспечивает дополнительный уровень абстракции.
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 (простой протокол доступа к объектам)
Удаленный вызов процедур (RPC) - это межпроцессное взаимодействие, которое позволяет вызывать функцию в другом процессе, находящемся на локальном или удаленном компьютере.
Удаленный вызов метода (RMI) - это API, который реализует RPC в Java с поддержкой объектно-ориентированных парадигм.
Вы можете думать о вызове RPC, как о вызове процедуры на Си. RPC поддерживает примитивные типы данных, в то время как RMI поддерживает параметры метода / возвращает типы как объекты Java.
RMI легко программируется в отличие от RPC. Вы можете представить свою бизнес-логику в терминах объектов, а не последовательности примитивных типов данных.
RPC не зависит от языка в отличие от RMI, который ограничен Java
RMI немного медленнее RPC
Посмотрите на эту статью для реализации RPC в C
RMI или удаленный вызов метода очень похожи на вызов RPC или удаленной процедуры в том, что клиент одновременно отправляет прокси-объекты (или заглушки) на сервер, однако тонкое отличие состоит в том, что RPC на стороне клиента вызывает FUNCTIONS через функцию прокси, а RMI вызывает METHODS через прокси-функция. RMI считается немного лучше, поскольку это объектно-ориентированная версия RPC.
От сюда .
Для получения дополнительной информации и примеров, посмотрите здесь .
Разница между RMI и RPC заключается в том, что:
method
и a function
? В Java нет функций ... но в ООП, насколько я помню, они синонимы, а значит invocation
и call
.
RPC - это старый протокол, основанный на C. Он может вызывать удаленную процедуру и делать ее похожей на локальный вызов. RPC обрабатывает сложности, связанные с передачей этого удаленного вызова на сервер и получением результата для клиента.
Java RMI также выполняет то же самое, но немного по-другому. Он использует ссылки на удаленные объекты. Так что он отправляет ссылку на удаленный объект вместе с именем вызываемого метода. Это лучше, потому что это приводит к чистоте код в случае больших программ, а также распределение объектов по сети позволяет нескольким клиентам вызывать методы на сервере, а не устанавливать каждое соединение по отдельности.
RMI
в Java что-то похожееgRPC
на .Net ...