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

RPC проти RMI
 

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

Що таке RPC?

RPC, який розшифровується як віддалений процедурний виклик, є типом міжпроцесорного зв'язку. Це дозволяє викликати функцію в іншому процесі, який працює на локальному або віддаленому комп'ютері. Ця концепція виникла дуже давно в 1980 році, але перша відома реалізація була помічена в Unix.

RPC включає кілька етапів. Клієнт виконує процедуру дзвінка на локальному комп'ютері, як зазвичай. Модуль, який називається клієнтським заглушкою, збирає аргументи і створює повідомлення та передає в операційну систему, Операційна система робить системний виклик і відправляє це повідомлення на віддалений комп'ютер. Операційна система на сервері збирає повідомлення та передає модуль на сервері, який називається серверною заглушкою. Тоді заглушка сервера викликає процедуру на сервері. Нарешті, результати надсилаються назад клієнту.

Перевага використання RPC полягає в тому, що він не залежить від деталей мережі. Програміст просто повинен вказати абстрактно, тоді як операційна система буде доглядати деталі внутрішньої мережі. Це полегшує програмування та дозволяє RPC працювати в будь-якій мережі, незважаючи на фізичні та протокольні відмінності. Реалізації RPC присутні у всіх основних операційних системах, таких як Unix, Linux, Windows та OS X. RPC, як правило, є нейтральним до мови, тому обмежує типи даних найпримітивнішими, оскільки вони повинні бути загальними для всіх мов. Підхід у RPC не є об'єктно-орієнтованим, але це традиційний процедурний механізм, як у C.

Що таке RMI?

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

RMI використовує вбудовані механізми захисту в Java, а також надає фабрику сокетів, яка дозволяє використовувати протоколи користувальницького транспортного рівня, що не є TCP. Більше того, RMI надає методи обходу міжмережевих екранів. Етапи, що відбуваються в RMI, схожі на RPC. Реалізація RMI враховує деталі внутрішньої мережі, коли програміст не повинен їх турбувати.

Чим відрізняється RPC від RMI?

• RPC є мовою нейтральною, тоді як RMI обмежений Java.

• RPC є процедурним як у C, але RMI орієнтована на об'єкти.

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

• RMI легко запрограмувати цей RPC.

• RMI повільніше, ніж RPC, оскільки RMI передбачає виконання байт-коду Java.

• RMI дозволяє використовувати шаблони проектування в силу об'єктно-орієнтованого характеру, тоді як RPC не має такої можливості.

Підсумок:

RPC проти RMI

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

Надано зображення:

  1. Синхронний проти асинхронного RPC від компанії CAPS (CC BY-SA 3.0)