Разлика между RPC и RMI

Автор: Laura McKinney
Дата На Създаване: 1 Април 2021
Дата На Актуализиране: 15 Може 2024
Anonim
RPC и REST — в чём разница? Часть 1: RPC
Видео: RPC и REST — в чём разница? Часть 1: RPC

Съдържание


RPC и RMI са механизмите, които позволяват на клиента да извика процедурата или метода от сървъра чрез установяване на комуникация между клиент и сървър. Общата разлика между RPC и RMI е, че RPC поддържа само процедурно програмиране като има предвид, че RMI поддържа обектно-ориентирано програмиране.

Друга основна разлика между двете е, че параметрите, предадени на извикване на отдалечени процедури, се състоят от обикновени структури от данни, От друга страна, параметрите, преминали към отдалечен метод, се състоят от обекти.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

Основа за сравнениеRPCRMI
ПоддържаПроцедурно програмиране
Обектно-ориентирано програмиране
ПараметриОбикновените структури от данни се предават на отдалечени процедури.Обектите се предават на отдалечени методи.
ЕфективностПо-ниска от RMIПовече от RPC и се поддържа от модерен подход за програмиране (т.е. обектно-ориентирани парадигми)
режийни разноски| Повече ▼
По-малко сравнително
Входните параметри са задължителни.даНе е задължително
Осигуряване на лекота на програмиране
Високо
ниско


Определение на RPC

Обаждане за отдалечена процедура (RPC) е функция на език за програмиране, разработена за разпределените изчисления и базирана на семантиката на местна процедура призовава. Това е най-често срещаните форми на отдалечена услуга и е проектиран като начин да се абстрахира механизмът за извикване на процедурата, който да се използва между системи, свързани чрез мрежа. Той е подобен на IPC механизма, при който операционната система позволява на процесите да управляват споделени данни и да се справят със среда, където различни процеси се изпълняват на отделни системи и задължително изискват комуникация на базата.

Нека разберем как се реализира RPC чрез дадените стъпки:

  • Клиентският процес извиква клиентския мъник с параметри и неговото изпълнение е спряно до приключване на обаждането.
  • След това параметрите се превеждат в независима от машината форма чрез маршируване през клиентския шнур. Тогава се подготвя, които съдържат представянето на параметрите.
  • За да открие самоличността на сайта, клиентът мъник общува със сървъра за имена, на който съществува отдалечена процедура.
  • Използвайки протокол за блокиране, клиентът се предава на сайта, където има отдалечен разговор за процедура. Тази стъпка спира мъничето на клиента, докато не получи отговор.


  • Сайтът на сървъра получава изпратеното от страна на клиента и го преобразува в специфичен за машината формат.
  • Сега сървърният шнур изпълнява обаждане по процедурата на сървъра заедно с параметрите и сърбният шнур се прекратява до приключване на процедурата.
  • Сървърната процедура връща генерираните резултати към сървъра и резултатите се конвертират в независим от машината формат на сървъра и създават съдържащ резултатите.
  • Резултатът се изпраща до клиентския шнур, който се преобразува обратно в специфичен за машината формат, подходящ за клиента.
  • На последния клиент stub връща резултатите в клиентския процес.

Определение на RMI

Извикване на отдалечен метод (RMI) е подобен на RPC, но е специфичен за езика и черта на java. Позволено е на нишката да извика метода на отдалечен обект. За да поддържа прозрачността от страна на клиента и сървъра, той реализира отдалечен обект с помощта на мъничета и скелети. Стъбът пребивава с клиента и за отдалечения обект се държи като прокси.

Когато клиент извика отдалечен метод, се извиква мъничето за отдалечения метод. Клиентският заглушник е отговорен за създаването и използването на колета, съдържащ името на метод и параметрите, а скелетът е отговорен за получаването на колета.

Скелетът демаркира параметрите и извиква желания метод на сървъра. Скелетът преобразува зададената стойност (или изключения) с колета и го предава на клиентска заглушка. Щубът отново сглобява връщащия колет и го изпраща на клиента.

В Java параметрите се предават на методи и се връщат под формата на референция. Това може да бъде проблем за RMI услугата, тъй като не всички обекти са отдалечени методи. И така, той трябва да определи кои могат да бъдат приети като референтни и кои не.

Java използва процес с име сериализация където обектите се предават като стойност. Отдалеченият обект се локализира чрез пропускане по стойност. Той може също така да предаде обект чрез препратка чрез предаване на отдалечена препратка към обекта заедно с URL адреса на класа на stub. Pass by reference ограничава мъниче за отдалечения обект.

  1. RPC поддържа парадигми за процедурно програмиране, така че се основава на C, докато RMI поддържа обектно-ориентирани парадигми за програмиране и се основава на Java.
  2. Параметрите, предадени на отдалечени процедури в RPC, са обикновените структури от данни. Напротив, RMI предава обекти като параметър към отдалечения метод.
  3. RPC може да се счита за по-старата версия на RMI и се използва в езиците за програмиране, които поддържат процедурно програмиране и може да използва само метод pass by by value. За разлика от това, RMI съоръжението е разработено на базата на модерен подход за програмиране, който може да използва преминаване по стойност или референция. Друго предимство на RMI е, че параметрите, предавани чрез препратка, могат да се променят.
  4. RPC протоколът генерира повече режийни разходи от RMI.
  5. Параметрите, предадени в RPC, трябва да бъдат „в изчакване”, Което означава, че стойността, предадена на процедурата, и изходната стойност трябва да имат същите типове данни. За разлика от това, няма принуда да се премине „в изчакване”Параметри в RMI.
  6. В RPC препратките не могат да бъдат вероятни, тъй като двата процеса имат ясно адресно пространство, но това е възможно в случай на RMI.

заключение

И RPC, и RMI имат една и съща цел, но се използват в езици, поддържащи различни парадигми за програмиране, поради което имат различни характеристики.