Препоръчано, 2020

Избор На Редактора

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

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

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

Сравнителна таблица

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

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

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

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

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

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

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

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

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

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

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

Основни разлики между RPC и RMI

  1. RPC поддържа парадигми за процедурно програмиране, така че е базиран на С, докато RMI поддържа обектно-ориентирани парадигми за програмиране и е базиран на java.
  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