Odporúčaná, 2019

Redakcia Choice

Rozdiel medzi RPC a RMI

RPC a RMI sú mechanizmy, ktoré umožňujú klientovi vyvolať postup alebo metódu zo servera prostredníctvom vytvorenia komunikácie medzi klientom a serverom. Spoločným rozdielom medzi RPC a RMI je to, že RPC podporuje iba procedurálne programovanie, zatiaľ čo RMI podporuje objektovo orientované programovanie .

Ďalším hlavným rozdielom medzi týmito dvoma je to, že parametre prechádzajúce na volanie na diaľkové postupy pozostávajú z bežných dátových štruktúr . Na druhej strane parametre prechádzajúce na vzdialenú metódu pozostávajú z objektov .

Porovnávacia tabuľka

Základ pre porovnanieRPCRMI
podperyProcedurálne programovanie
Objektovo orientované programovanie
parametreBežné dátové štruktúry sa prenášajú do vzdialených procedúr.Objekty prechádzajú na vzdialené metódy.
efektívnosťNižšia ako RMIViac ako RPC a podporované moderným programovým prístupom (tj objektovo orientované paradigmy)
režijnéviac
Menej porovnateľné
In-out parametre sú povinné.ÁnoNie nevyhnutne
Zjednodušenie programovania
vysoký
nízky

Definícia RPC

Vzdialené procedurálne volanie (RPC) je funkcia programovacieho jazyka navrhnutá pre distribuované výpočty a založená na sémantike miestnych volaní procedúr . Jedná sa o najbežnejšie formy vzdialenej služby a bol navrhnutý ako spôsob, ako abstraktný mechanizmus volania procedúr medzi systémami pripojenými prostredníctvom siete. Je to podobne ako mechanizmus IPC, kde operačný systém umožňuje procesom spravovať zdieľané údaje a zaoberať sa prostredím, kde sa rôzne procesy vykonávajú v samostatných systémoch a nevyhnutne vyžadujú komunikáciu na základe správ.

Pochopme, ako sa RPC implementuje prostredníctvom daných krokov:

  • Klientský proces volá klientský blok s parametrami a jeho vykonanie je pozastavené až do ukončenia hovoru.
  • Parametre sa následne preložia do strojovo nezávislého tvaru pomocou zoraďovania prostredníctvom klienta. Potom sa pripraví správa, ktorá obsahuje zobrazenie parametrov.
  • Ak chcete zistiť totožnosť lokality, stub klienta navzájom komunikovať so serverom názvov, v ktorom existuje diaľkový postup.
  • Pomocou blokovacieho protokolu odosiela klient stub na miesto, kde existuje diaľkový postup. Tento krok zastaví stúpača klienta, kým nedostane odpoveď.
  • Stránka servera prijme správu odoslanú na strane klienta a prevedie ju na špecifický strojový formát.
  • Teraz server stub vykoná volanie na procedúre server spolu s parametrami, a server stub je prerušený až do dokončenia postupu.
  • Procedúra servera vracia vygenerované výsledky do servera a výsledok sa prekonvertuje na formát nezávislý od počítača na serveri a vytvorí správu obsahujúcu výsledky.
  • Výsledná správa sa odošle klientovi, ktorý sa konvertuje späť na špecifický formát stroja, ktorý je vhodný pre klienta.
  • Na poslednom klientovi sa stub vráti výsledky do klientskyho procesu.

Definícia RMI

Diaľkové vyvolanie metódy (RMI) je podobné RPC, ale je špecifické pre jazyk a funkciu java. Na vlákno je povolené zavolať metódu na vzdialenom objekte. Ak chcete zachovať priehľadnosť na strane klienta a servera, implementuje vzdialený objekt pomocou stubov a skeletov. Stub je umiestnený s klientom a vzdialený objekt sa správa ako proxy.

Keď klient zavolá vzdialený spôsob, volá sa stub pre vzdialený spôsob. Stub klienta je zodpovedný za vytváranie a odosielanie balíka obsahujúceho názov metódy a parametre, ktoré sú označené, a kostra je zodpovedná za príjem parcely.

Skelet rozbalí parametre a vyvolá požadovanú metódu na serveri. Skeleton zaraďuje danú hodnotu (alebo výnimky) na balík a odošle ju klientovi. Pahýľ znovu spája vrátenú parcelu a pošle ju klientovi.

V jazyku Java sa parametre odovzdávajú metódam a vrátia sa vo forme referencie. To môže byť problematické pre službu RMI, pretože nie všetky objekty sú možná vzdialené metódy. Takže musí určiť, ktorá by sa mohla odovzdať ako referencia a ktorá by nemohla.

Java používa proces s názvom serializácia, kde sa objekty prenášajú ako hodnota. Diaľkový objekt je lokalizovaný pomocou hodnoty prechodu. Taktiež môže odovzdať objekt odkazom prostredníctvom odovzdania vzdialeného odkazu na objekt spolu s adresou URL stubovej triedy. Prechod cez odkaz obmedzuje stub pre vzdialený objekt.

Kľúčové rozdiely medzi RPC a RMI

  1. RPC podporuje paradigmy procedurálneho programovania, takže je založená na C, zatiaľ čo RMI podporuje objektovo orientované programovacie paradigmy a je založená na jave.
  2. Parametre odovzdané vzdialeným procedúram v RPC sú bežné dátové štruktúry. Naopak, RMI prechádza objekty ako parameter vzdialenej metódy.
  3. RPC môže byť považovaná za staršiu verziu nástroja RMI a používa sa v programovacích jazykoch, ktoré podporujú procedurálne programovanie, a môže používať iba metódu pass by value. Na rozdiel od toho je nástroj RMI navrhnutý na základe moderného programovacieho prístupu, ktorý by mohol využívať hodnoty alebo referencie. Ďalšou výhodou RMI je, že parametre odovzdané odkazom môžu byť zmenené.
  4. RPC protokol generuje viac režijných nákladov ako RMI.
  5. Parametre zadané v RPC musia byť " in-out ", čo znamená, že hodnota prechádzajúca procedúre a výstupná hodnota musia mať rovnaké typy údajov. Na rozdiel od toho neexistuje nútenosť prechádzať parametre " in-out " v RMI.
  6. V RPC by referencie nemohli byť pravdepodobné, pretože tieto dva procesy majú odlišný adresný priestor, ale je to možné v prípade RMI.

záver

Obe RPC a RMI slúžia rovnakému účelu, ale používajú sa v jazykoch podporujú rôzne programovacie paradigmy, a preto majú odlišné vlastnosti.

Top