Különbség az RPC és az RMI között

RPC vs RMI
 

Az RPC és az RMI közötti alapvető különbség az, hogy az RPC egy olyan mechanizmus, amely lehetővé teszi egy eljárás meghívását egy távoli számítógépen, míg az RMI az RPC Java alkalmazásban történő megvalósítása. Az RPC nyelven semleges, de csak az átadandó primitív adattípusokat támogatja. Másrészt az RMI a Java-ra korlátozódik, de lehetővé teszi az objektumok átadását. Az RPC a hagyományos eljárási nyelvi konstrukciókat követi, míg az RMI támogatja az objektum-orientált tervezést.

Mi az RPC??

Az RPC, amely a Remote Procedure Call-t jelenti, egy folyamatközi kommunikáció típusa. Ez lehetővé teszi egy funkció hívását egy másik folyamatban, amely a helyi számítógépen vagy a távoli számítógépen fut. Ez a koncepció régóta, 1980-ban alakult ki, de az első híres megvalósítást a Unix látta.

Az RPC több lépést foglal magában. Az ügyfél a szokásos módon eljárási hívást küld a helyi számítógépen. Az ügyfélcsonknak nevezett modul összegyűjti az argumentumokat, létrehoz egy üzenetet, és átadja az operációs rendszernek. Az operációs rendszer rendszerhívást kezdeményez, és elküldi ezt az üzenetet a távoli számítógépre. A kiszolgálón található operációs rendszer összegyűjti az üzenetet, és továbbadja a kiszolgálócsonknak nevezett modulon a kiszolgálón. Ezután a kiszolgálócsonk meghívja az eljárást a kiszolgálón. Végül az eredményeket visszajuttatjuk az ügyfélnek.

Az RPC használatának előnye, hogy független a hálózat részleteitől. A programozónak csak elvont módon kell meghatároznia, míg az operációs rendszer gondoskodik a belső hálózat részleteiről. Ez tehát megkönnyíti a programozást, és lehetővé teszi az RPC működését bármely hálózaton a fizikai és a protokoll különbségek ellenére. Az RPC implementációk megtalálhatók az összes mainstream operációs rendszerben, mint például az Unix, Linux, Windows és OS X. Az RPC általában nyelven semleges, ennélfogva az adattípusokat a legeredményesebbekre korlátozza, mivel ezeknek minden nyelvben közöseknek kell lenniük. Az RPC-ben a megközelítés nem objektumorientált, hanem egy hagyományos eljárási mechanizmus, mint például a C-ben.

Mi az RMI??

Az RMI, amely a Remote Method Invocation-t jelenti, egy API (Application Programming Interface), amely RPC-t valósít meg Java-ban az objektumorientált természet támogatása érdekében. Ez lehetővé teszi a Java módszerek meghívását egy másik Java virtuális gépen, amely ugyanazon a számítógépen vagy egy távoli számítógépen található. Az RMI korlátozása az, hogy csak Java módszereket lehet meghívni, de ez azzal az előnnyel jár, hogy az objektumok argumentumként és visszatérési értékekként továbbíthatók. Ha a teljesítményt úgy tekintjük, akkor az RMI lassabb, mint az RPC, mert a bájtkód a Java virtuális gépen szerepel, de az RMI nagyon programozóbarát, és nagyon könnyen használható.

Az RMI beépített biztonsági mechanizmusokat használ a Java-ban, valamint olyan socket gyárat ad, amely lehetővé teszi a nem TCP egyéni szállítási réteg protokollok használatát. Ezenkívül az RMI módszereket biztosít a tűzfalak megkerülésére. Az RMI-ben előforduló lépések hasonlóak az RPC-hez. Az RMI megvalósítása a belső hálózat részleteit követi, ahol a programozónak nem kell aggódnia róluk.

Mi a különbség az RPC és az RMI között??

• Az RPC nyelven semleges, míg az RMI a Java-ra korlátozódik.

• Az RPC eljárásbeli, mint a C esetében, de az RMI objektum-orientált.

• Az RPC csak primitív adattípusokat támogat, míg az RMI lehetővé teszi az objektumok átadását argumentumokként és visszatérési értékekként. Az RPC használatakor a programozónak minden összetett objektumot fel kell osztania primitív adattípusokra.

• Az RMI könnyen programozhatja ezt az RPC-t.

• Az RMI lassabb, mint az RPC, mivel az RMI magában foglalja a java bytekód végrehajtását.

• Az RMI lehetővé teszi a tervezési minták használatát az objektumorientált természet miatt, míg az RPC nem rendelkezik ezzel a képességgel.

Összefoglaló:

RPC vs RMI

Az RPC egy nyelven semleges mechanizmus, amely lehetővé teszi egy eljárás meghívását egy távoli számítógépen. A nyelven semleges szolgáltatás azonban az argumentumként átadott adattípusokat korlátozza, és az értékeket primitív típusokra adja vissza. Az RMI az RPC megvalósítása Java-ban és támogatja az objektumok átadását is, megkönnyítve a programozó életét. Az RMI előnye az objektumorientált tervezési támogatás, ám hátránya a Java korlátozása.

Képek jóvoltából:

  1. Szinkron és aszinkron RPC a CAPS vállalkozás által (CC BY-SA 3.0)