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

Автор: Laura McKinney
Дата Створення: 1 Квітень 2021
Дата Оновлення: 15 Травень 2024
Anonim
Justin Shi: Blockchain, Cryptocurrency and the Achilles Heel in Software Developments
Відеоролик: Justin Shi: Blockchain, Cryptocurrency and the Achilles Heel in Software Developments

Зміст


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-адресою класу stub. Пропуск за посиланням обмежує заглушку для віддаленого об'єкта.

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

Висновок

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