Anbefalet, 2024

Redaktørens Valg

Forskel mellem RPC og RMI

RPC og RMI er de mekanismer, der gør det muligt for en klient at påberåbe sig proceduren eller metoden fra serveren ved at etablere kommunikation mellem klient og server. Den fælles forskel mellem RPC og RMI er, at RPC kun understøtter proceduremæssig programmering, mens RMI understøtter objektorienteret programmering .

En anden væsentlig forskel mellem de to er, at parametrene passeret til fjernproceduropkald består af almindelige datastrukturer . På den anden side består parametrene til fjernmetoden af objekter .

Sammenligningstabel

Grundlag for sammenligningRPCRMI
Bakker opProcedurel programmering
Objektorienteret programmering
ParametreAlmindelige datastrukturer overføres til fjernprocedurer.Objekter overføres til fjernmetoder.
EffektivitetLavere end RMIMere end RPC og understøttet af moderne programmeringsmetode (dvs. Objektorienterede paradigmer)
OverheadsMere
Mindre forholdsmæssigt
In-out parametre er obligatoriske.JaIkke nødvendigvis
Tilvejebringelse af nem programmering
Høj
lav

Definition af RPC

Remote Procedure Call (RPC) er en programmeringssprogfunktion udformet til den distribuerede computer og baseret på semantik af lokale procedureopkald . Det er de mest almindelige former for fjernbetjening og blev udformet som en måde at abstrahere proceduren til opkaldsmekanismen til at bruge mellem systemer, der er tilsluttet via et netværk. Det ligner IPC-mekanismen, hvor operativsystemet gør det muligt for processerne at styre delte data og håndtere et miljø, hvor forskellige processer udføres på separate systemer og nødvendigvis kræver meddelelsesbaseret kommunikation.

Lad os forstå, hvordan RPC implementeres gennem de givne trin:

  • Klientprocessen kalder klientstubben med parametre, og udførelsen suspenderes, indtil opkaldet er afsluttet.
  • Parametrene omdannes derefter til maskinuafhængig form ved at skifte gennem klientstub. Derefter udarbejdes meddelelsen, som indeholder repræsentationen af ​​parametrene.
  • For at finde stedets identitet kommunikerer klientens stub med navneserver, hvor der findes en fjern procedure.
  • Ved hjælp af blokeringsprotokol sender klientstub meddelelsen til det sted, hvor der findes eksternt procedureopkald. Dette trin stopper klientens stub, indtil det får et svar.
  • Serverwebstedet modtager meddelelsen sendt fra klientsiden og konverterer den til maskinens specifikke format.
  • Nu server stub udfører et opkald på server procedure sammen med parametrene, og server stub er afbrudt indtil proceduren bliver afsluttet.
  • Serverproceduren returnerer de genererede resultater til serverstuben, og resultaterne konverteres til maskinuafhængigt format ved serverstub og opretter en meddelelse, der indeholder resultaterne.
  • Resultatmeddelelsen sendes til klientstuben, som konverteres tilbage til maskinens specifikke format, der passer til klientstubben.
  • Ved sidste klient returnerer stub resultaterne til klientprocessen.

Definition af RMI

Remote Method Invocation (RMI) svarer til RPC, men er sprogspecifik og en funktion af java. En tråd er tilladt at kalde metoden på et fjernt objekt. For at opretholde gennemsigtigheden på klient- og serversiden implementeres det fjerntliggende objekt ved hjælp af stubber og skeletter. Stubben befinder sig hos klienten, og for det fjernliggende objekt opfører det sig som en proxy.

Når en klient kalder en fjernmetode, kaldes stubben til den eksterne metode. Klientstubben er ansvarlig for at oprette og sende pakken, der indeholder navnet på en metode og de parametre, og skeletet er ansvarligt for at modtage pakken.

Skeletet ophæver parametre og påberåber den ønskede metode på serveren. Skeletet marscherer den givne værdi (eller undtagelser) med pakken og sender den til klientstub. Stuben genmonterer returpakken og sender den til kunden.

I Java sendes parametrene til metoder og returneres i form af reference. Dette kan være besværligt for RMI-tjenesten, da ikke alle objekter muligvis er fjernmetoder. Så det skal bestemme, hvilke der kunne overføres som reference og som ikke kunne.

Java bruger proces kaldet serialisering, hvor objekterne sendes som værdi. Det fjerne objekt er lokaliseret ved at passere for værdi. Det kan også bestå en genstand ved reference ved at sende en fjernreference til objektet sammen med stubklassens URL. Pass ved reference begrænser en stub for fjernobjektet.

Nøgleforskelle mellem RPC og RMI

  1. RPC understøtter processuelle programmeringsparadigmer, således er C baseret, mens RMI understøtter objektorienterede programmeringsparadigmer og er Java-baseret.
  2. Parametrene, der overføres til fjernprocedurer i RPC, er de almindelige datastrukturer. Tværtimod overfører RMI objekter som en parameter til fjernmetoden.
  3. RPC kan betragtes som den ældre version af RMI, og den bruges i programmeringssprogene, der understøtter procedurel programmering, og den kan kun bruge pass-by-værdi metode. Imidlertid er RMI-anlægget udformet på baggrund af moderne programmeringsmetode, som kunne bruge passere efter værdi eller reference. En anden fordel ved RMI er, at parametrene ved reference kan ændres.
  4. RPC-protokol genererer flere generalomkostninger end RMI.
  5. Parametrene, der passeres i RPC, skal være " in-out ", hvilket betyder at værdien, der overføres til proceduren og outputværdien, skal have de samme datatyper. Derimod er der ingen tvang om at sende " in-out " parametre i RMI.
  6. I RPC kunne referencer ikke være sandsynlige, fordi de to processer har det adskilte adresserum, men det er muligt i tilfælde af RMI.

Konklusion

Både RPC og RMI tjener samme formål, men anvendes på sprog, understøtter forskellige programmeringsparadigmer, og derfor har de forskellige funktioner.

Top