Відповіді:
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 - це як викликати процедуру C. RPC підтримує примітивні типи даних, де як параметри методу підтримки RMI / типи повернення як об'єкти Java.
RMI легко програмувати на відміну від RPC. Ви можете думати про свою логіку бізнесу щодо об'єктів замість послідовності примітивних типів даних.
RPC - мова нейтральна на відміну від RMI, яка обмежена Java
RMI трохи повільніше RPC
Подивіться цю статтю про реалізацію RPC в C
RMI або Remote Method Invokation дуже схожий на виклик RPC або Remote Procedure, оскільки клієнт обидва надсилає проксі-об'єкти (або заглушки) на сервер, однак тонка різниця полягає в тому, що RPC на стороні клієнта викликає FUNCTIONS через функцію proxy і RMI викликає METHODS через функція проксі. RMI вважається дещо вищим, оскільки це об'єктно-орієнтована версія RPC.
Від сюди .
Для отримання додаткової інформації та прикладів, подивіться тут .
Різниця між RMI та RPC полягає в тому, що:
method
і a function
? У Java немає функцій ... але в OOP, наскільки я пам'ятаю, вони є синонімами, і так є invocation
і є call
.
RPC - це старий протокол, заснований на C. Він може викликати віддалену процедуру і зробити її схожою на локальний call.RPC обробляє складності передачі цього віддаленого виклику на сервер та отримання результату клієнту.
Java RMI також досягає того ж самого, але трохи інакше. Він використовує посилання на віддалені об'єкти . Отже, що він робить, це те, що він надсилає посилання на віддалений об'єкт разом з ім'ям методу для виклику. Це краще, оскільки це призводить до очищення код у разі великих програм, а також розподіл об'єктів по мережі дозволяє декільком клієнтам викликати методи на сервері замість встановлення кожного з'єднання окремо.
RMI
в Java щось подібнеgRPC
до .Net ...