Doporučená, 2021

Redakce Choice

Rozdíl mezi RPC a RMI

RPC a RMI jsou mechanismy, které umožňují klientovi vyvolat proceduru nebo metodu ze serveru prostřednictvím navázání komunikace mezi klientem a serverem. Společný rozdíl mezi RPC a RMI je, že RPC podporuje pouze procesní programování, zatímco RMI podporuje objektově orientované programování .

Dalším významným rozdílem mezi těmito dvěma je, že parametry předané volání vzdálených procedur sestávají z obyčejných datových struktur . Na druhé straně parametry předávané vzdálené metodě sestávají z objektů .

Srovnávací graf

Základ pro srovnáníRPCRMI
PodpěryProcesní programování
Objektově orientované programování
ParametryBěžné datové struktury jsou předávány vzdáleným postupům.Objekty jsou předány vzdáleným metodám.
ÚčinnostNižší než RMIVíce než RPC a podpora moderním programovacím přístupem (tj. Objektově orientovaná paradigmata)
Režijní nákladyVíce
Méně srovnatelně
Parametry in-out jsou povinné.AnoNe nutně
Zajištění snadného programování
Vysoký
nízký

Definice RPC

Vzdálené volání procedur (RPC) je funkce programovacího jazyka navržená pro distribuované výpočty a založená na sémantice volání místních procedur . Jedná se o nejběžnější formy vzdálené služby a byl navržen jako způsob, jak abstraktní mechanismus volání procedur použít mezi systémy připojenými prostřednictvím sítě. Je to podobné mechanismu IPC, kde operační systém umožňuje procesům spravovat sdílená data a zabývat se prostředím, ve kterém jsou různé procesy prováděny na samostatných systémech a nutně vyžadují komunikaci založenou na zprávách.

Uvědomme si, jak je RPC implementováno prostřednictvím daných kroků:

  • Proces klienta zavolá stub klienta s parametry a jeho provedení je pozastaveno, dokud není volání dokončeno.
  • Parametry jsou pak převedeny na strojově nezávislý formulář pomocí přesměrování přes klientský stub. Pak je zpráva připravena, která obsahuje reprezentaci parametrů.
  • Chcete-li zjistit identitu webu, stub klienta se propojí se serverem jmen, na kterém existuje vzdálená procedura.
  • Pomocí blokovacího protokolu klientský stub odešle zprávu na místo, kde existuje vzdálené volání procedur. Tento krok zastaví stub klienta, dokud nedostane odpověď.
  • Server server přijme zprávu odeslanou ze strany klienta a převede ji do formátu specifického pro počítač.
  • Serverový stub nyní provede volání na proceduře serveru spolu s parametry a pahýl serveru je přerušen, dokud se procedura nedokončí.
  • Procedura serveru vrátí generované výsledky do pahýlu serveru a výsledky se převedou na strojově nezávislý formát na stub serveru a vytvoří zprávu obsahující výsledky.
  • Zpráva o výsledku je odeslána do klientského stubu, který je převeden zpět do formátu specifického pro počítač, který je vhodný pro stub klienta.
  • Na posledním klientovi vrátí stub výsledky klientskému procesu.

Definice RMI

Vzdálená metoda Invocation (RMI) je podobná RPC, ale je specifická pro jazyk a funkce java. Vlákno je povoleno volat metodu na vzdáleném objektu. Pro zachování průhlednosti na straně klienta a serveru implementuje vzdálený objekt pomocí pahýlů a koster. Stub se nachází u klienta a vzdáleného objektu se chová jako proxy.

Když klient zavolá vzdálenou metodu, zavolá se stub pro vzdálenou metodu. Stub klienta je zodpovědný za vytvoření a odeslání balíku obsahujícího název metody a parametry zařazené do skupiny a kostra je zodpovědná za příjem zásilky.

Parametry skeleton unmarshals a vyvolá požadovanou metodu na serveru. Kostra zařadí danou hodnotu (nebo výjimky) do balíku a odešle ji klientovi. Stub znovu sestaví vrácenou zásilku a odešle ji klientovi.

V jazyce Java jsou parametry předávány metodám a vráceny ve formě odkazu. To by mohlo být problematické pro službu RMI, protože ne všechny objekty jsou možná vzdálené metody. Musí tedy určit, které by mohly být předány jako reference a které nemohly.

Java používá proces nazvaný serializace, kde jsou objekty předávány jako hodnota. Vzdálený objekt je lokalizován podle hodnoty pass. To může také předat objekt odkazem přes předávání vzdáleného odkazu na objekt spolu s URL třídy stub. Předat podle odkazu omezí pauzu pro vzdálený objekt.

Klíčové rozdíly mezi RPC a RMI

  1. RPC podporuje procedurální programovací paradigmata tak je C umístěný, zatímco RMI podporuje objektově orientované programovací paradigmata a je založený na javě.
  2. Parametry předané vzdáleným procedurám v RPC jsou běžné datové struktury. Naopak RMI přenáší objekty jako parametr vzdálené metody.
  3. RPC lze považovat za starší verzi RMI a používá se v programovacích jazycích, které podporují procesní programování, a může používat pouze metodu pass by value. Zařízení RMI je oproti tomu navrženo na základě moderního programovacího přístupu, který by mohl využít předávání hodnotou nebo odkazem. Další výhodou RMI je, že parametry předané odkazem mohou být změněny.
  4. Protokol RPC generuje více režijních nákladů než RMI.
  5. Parametry předávané v RPC musí být „ in-out “, což znamená, že hodnota předaná proceduře a výstupní hodnota musí mít stejné datové typy. Naproti tomu v RMI nedochází k nutnému předávání „ in-out “ parametrů.
  6. V RPC, odkazy nemohly být pravděpodobné, protože dva procesy mají odlišný adresní prostor, ale je to možné v případě RMI.

Závěr

RPC i RMI slouží stejnému účelu, ale používají se v jazycích podporujících různá programovací paradigmata, proto mají odlišné vlastnosti.

Top