Рекомендуємо, 2024

Вибір Редакції

Різниця між RPC і RMI

RPC і RMI є механізмами, які дозволяють клієнту викликати процедуру або метод з сервера через встановлення зв'язку між клієнтом і сервером. Спільною відмінністю між RPC і RMI є те, що RPC підтримує лише процедурне програмування, тоді як RMI підтримує об'єктно-орієнтоване програмування .

Іншою важливою відмінністю між ними є те, що параметри, передані виклику віддалених процедур, складаються з звичайних структур даних . З іншого боку, параметри, передані віддаленому методу, складаються з об'єктів .

Діаграма порівняння

Основа для порівнянняRPCRMI
ПідтримуєПроцедурне програмування
Об'єктно-орієнтоване програмування
ПараметриЗвичайні структури даних передаються до віддалених процедур.Об'єкти передаються до віддалених методів.
ЕфективністьНижче, ніж RMIБільше, ніж RPC і підтримується сучасним програмним підходом (тобто об'єктно-орієнтованими парадигмами)
Накладні витратиБільше
Менш порівняно
Параметри входу є обов'язковими.ТакНе обов'язково
Забезпечення зручності програмування
Високий
низький

Визначення RPC

Віддалений виклик процедур (RPC) - це функція мови програмування, розроблена для розподілених обчислень і заснована на семантиці локальних викликів процедур . Це найпоширеніші форми віддаленого сервісу і було розроблено як спосіб абстрактного механізму виклику процедур для використання між системами, підключеними через мережу. Він подібний до механізму МПК, де операційна система дозволяє процесам керувати загальними даними і мати справу з середовищем, де різні процеси виконуються на окремих системах і обов'язково вимагають зв'язку на основі повідомлень.

Давайте зрозуміємо, як RPC реалізується за допомогою цих кроків:

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

Визначення RMI

Віддалений виклик методу (RMI) подібний до RPC, але є специфічною мовою та функцією java. Потік дозволяється викликати метод на віддаленому об'єкті. Для підтримки прозорості на стороні клієнта і сервера він реалізує віддалений об'єкт за допомогою заглушок і скелетів. Заглушка знаходиться в клієнті, і для віддаленого об'єкта він веде себе як проксі-сервер.

Коли клієнт викликає віддалений метод, викликається заглушка для віддаленого методу. Клієнтська заглушка відповідальна за створення і відправлення посилки, що містить ім'я методу і розподілені параметри, і скелет відповідає за отримання посилки.

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

У Java параметри передаються методам і повертаються у вигляді посилання. Це може бути важким для служби RMI, оскільки не всі об'єкти є віддаленими методами. Отже, він повинен визначити, які можуть бути передані як посилання і які не могли.

Java використовує процес, названий серіалізацією, де об'єкти передаються як значення. Віддалений об'єкт локалізується за допомогою pass by value. Він також може передавати об'єкт шляхом посилання шляхом передачі віддаленої посилання на об'єкт разом з URL-адресою класу stub. Pass by reference обмежує заглушку для віддаленого об'єкта.

Основні відмінності між RPC і RMI

  1. RPC підтримує парадигми процедурного програмування, таким чином, заснована на C, тоді як RMI підтримує парадигми об'єктно-орієнтованого програмування і є java based.
  2. Параметри, передані віддаленим процедурам в RPC, є звичайними структурами даних. Навпаки, RMI передає об'єкти як параметр до віддаленого методу.
  3. RPC можна розглядати як стару версію RMI, і він використовується в мовах програмування, які підтримують процедурне програмування, і він може використовувати тільки метод pass by value. На відміну від цього, об'єкт RMI розроблений на основі сучасного підходу до програмування, який міг би використовувати pass by value або reference. Іншою перевагою RMI є те, що параметри, передані за допомогою посилання, можуть бути змінені.
  4. Протокол RPC генерує більше накладних витрат, ніж RMI.
  5. Параметри, передані в RPC, повинні бути “ in-out ”, що означає, що значення, передане в процедуру і вихідне значення, повинні мати однакові типи даних. На відміну від цього, в RMI не існує примусу передачі параметрів “ in-out ”.
  6. У RPC посилання не можуть бути ймовірними, оскільки два процеси мають окремий адресний простір, але це можливо у випадку RMI.

Висновок

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

Top