Rekommenderas, 2024

Redaktionen

Skillnad mellan RPC och RMI

RPC och RMI är de mekanismer som gör att en klient kan åberopa proceduren eller metoden från servern genom att upprätta kommunikation mellan klient och server. Den vanliga skillnaden mellan RPC och RMI är att RPC endast stöder procedurprogrammering medan RMI stöder objektorienterad programmering .

En annan stor skillnad mellan de två är att parametrarna passerade till fjärrproceduranrop består av vanliga datastrukturer . Å andra sidan består parametrarna som passeras till avlägsen metod av föremål .

Jämförelsediagram

Grunder för jämförelseRPCRMI
stöderProcedurell programmering
Objektorienterad programmering
parametrarVanliga datastrukturer överförs till fjärrprocedurer.Objekt skickas till avlägsna metoder.
EffektivitetLägre än RMIMer än RPC och stödd av moderna programmeringsmetoder (dvs Objektorienterade paradigmer)
Allmänna omkostnaderMer
Mindre jämförelsevis
In-out parametrar är obligatoriska.JaInte nödvändigtvis
Tillhandahållande av enkel programmering
Hög
låg

Definition av RPC

Remote Procedure Call (RPC) är en programmeringsspråkfunktion konstruerad för distribuerad databehandling och baserad på semantik för lokala procedurer . Det är de vanligaste formerna för fjärrservice och utformades som ett sätt att abstrahera proceduren för samtalsmetod för att använda mellan system som är anslutna via ett nätverk. Det liknar IPC-mekanismen där operativsystemet tillåter processerna att hantera delad data och hantera en miljö där olika processer exekveras på separata system och nödvändigtvis kräver meddelandebaserad kommunikation.

Låt oss förstå hur RPC implementeras genom de angivna stegen:

  • Klientprocessen kallar klientstubben med parametrar, och dess körning avbryts tills samtalet är klart.
  • Parametrarna översätts därefter till maskinoberoende form genom marshallering genom klientstubben. Därefter förbereds meddelandet som innehåller parameterns representation.
  • För att hitta webbplatsens identitet kommunicerar klientstubben med namnservern vid vilken fjärrprocedur som finns.
  • Med hjälp av blockeringsprotokoll skickar klientstubben meddelandet till den plats där fjärrproceduranrop existerar. Detta steg stoppar klientstubben tills det får ett svar.
  • På serverns webbplats mottas meddelandet som skickas från klientsidan och omvandlar det till maskinspecifik format.
  • Nu server stub kör ett samtal på serverproceduren tillsammans med parametrarna och serverns stubben avbryts tills proceduren blir klar.
  • Serverproceduren returnerar de genererade resultaten till serverns stub, och resultaten omvandlas till maskinoberoende format vid serverstubben och skapar ett meddelande som innehåller resultaten.
  • Resultatmeddelandet skickas till klientstubben som konverteras tillbaka till maskinspecifikt format som är lämpligt för klientstubben.
  • Slutligen returnerar stubben resultaten till klientprocessen.

Definition av RMI

Remote Method Invocation (RMI) liknar RPC men är språkspecifik och en funktion av Java. En tråd får ringa metoden på ett fjärrobjekt. För att behålla insynen på klient- och serversidan implementeras det fjärrobjekt med stubbar och skelett. Stubben ligger hos klienten och för det fjärranslutna objektet uppträder det som en proxy.

När en klient ringer en fjärransluten metod kallas stubben för fjärrmetoden. Klientstubben är ansvarig för att skapa och skicka paketet med namnet på en metod och de marshallerade parametrarna, och skelettet är ansvarigt för att ta emot paketet.

Skelettet avgrenar parametrarna och åberopar den önskade metoden på servern. Skelettet marscherar det angivna värdet (eller undantag) med paketet och skickar det till klientstubben. Stubben sätter tillbaka returpaketet och skickar det till kunden.

I Java skickas parametrarna till metoder och returneras i referensform. Detta kan vara besvärligt för RMI-tjänsten eftersom inte alla objekt är möjligen avlägsna metoder. Så måste det avgöra vilken som skulle kunna överföras som referens och som inte kunde.

Java använder process som heter serialisering där objekten överförs som värde. Det avlägsna objektet är lokaliserat med passera för värde. Det kan också passera ett objekt genom referens genom att ge en fjärrreferens till objektet tillsammans med webbadressen till stubklassen. Passera vid referens begränsar en stub för fjärrobjektet.

Viktiga skillnader mellan RPC och RMI

  1. RPC stöder procedurprogrammeringsparadigmer sålunda är C-baserade, medan RMI stöder objektorienterade programmeringsparadigmer och är baserad på Java.
  2. Parametrarna som skickas till fjärrprocedurer i RPC är de vanliga datastrukturerna. Tvärtom överför RMI objekt som en parameter till fjärrmetoden.
  3. RPC kan betraktas som den äldre versionen av RMI, och den används i programmeringsspråken som stöder procedurprogrammering, och den kan bara använda överföringsmetod. I motsats till är RMI-anläggningen utformad utifrån moderna programmeringsmetoder som kan använda passera efter värde eller referens. En annan fördel med RMI är att parametrarna som skickas genom referens kan ändras.
  4. RPC-protokollet genererar mer omkostnader än RMI.
  5. Parametrarna som passeras i RPC måste vara " in-out " vilket innebär att värdet som passeras till proceduren och utgångsvärdet måste ha samma datatyper. Däremot är det ingen tvång att överföra parametrar i RMI.
  6. I RPC kan referenser inte vara sannolika eftersom de två processerna har det tydliga adressutrymmet, men det är möjligt om det gäller RMI.

Slutsats

Både RPC och RMI tjänar samma syfte men används på språk som stödjer olika programmeringsparadigmer, har därför olika egenskaper.

Top