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 megvalósítása a java-ban. Az RPC nyelv semleges, de csak a primitív adattípusokat támogatja. Másrészt az RMI a Java-ra korlátozódik, de lehetővé teszi az objektumok továbbadását. Az RPC a hagyományos eljárási nyelvi konstrukciókat követi, míg az RMI objektum-orientált kialakítást támogat.
Mi az RPC?
Az RPC, amely a Távoli eljáráshívás rövidítése, a folyamatok közötti kommunikáció egyik típusa. Ez lehetővé teszi egy függvény meghívását egy másik folyamatban, amely a helyi számítógépen vagy egy távoli számítógépen fut. Ez a koncepció nagyon régen, 1980-ban jelent meg, de az első híres megvalósítás a Unixban volt látható.
Az RPC több lépésből áll. Az ügyfél a szokásos módon eljárási hívást hajt végre a helyi számítógépen. Az ügyfélcsonknak nevezett modul összegyűjti az argumentumokat, létrehoz egy üzenetet és továbbítja az operációs rendszernek. Az operációs rendszer rendszerhívást hajt végre, és ezt az üzenetet elküldi a távoli számítógépnek. A kiszolgáló operációs rendszere összegyűjti az üzenetet és továbbítja a szerver csonknak nevezett szerveren lévő modulhoz. Ezután a szervercsonk meghívja az eljárást a szerveren. Végül az eredményeket visszaküldik 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 megadnia, miközben az operációs rendszer gondoskodik a belső hálózat részleteiről. Tehát ez megkönnyíti a programozást, és lehetővé teszi az RPC számára, hogy a fizikai és protokollbeli különbségek ellenére bármilyen hálózaton működjön. Az RPC implementációk minden mainstream operációs rendszerben megtalálhatók, mint például a Unix, Linux, Windows és OS X. Az RPC általában nyelv semleges, ezért az adattípusokat a legprimitívebbekre korlátozza, mivel minden nyelvnek közösnek kell lennie. Az RPC megközelítése nem objektumorientált, hanem hagyományos eljárási mechanizmus, mint a C-ben.
Mi az RMI?
Az RMI, amely a Remote Method Invocation rövidítése, egy API (Application Programming Interface), amely az RPC-t Java-ban valósítja meg az objektum-orientált természet támogatása érdekében. Ez lehetővé teszi a Java metódusok 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 objektumokat argumentumként és visszatérő értékként lehet továbbadni. Ha a teljesítményt tekintjük, az RMI lassabb, mint az RPC, a bájtkód Java Java virtuális gépen való részvétele miatt, 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, és olyan socketgyárat is 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 kínál 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 figyeli, ahol a programozónak nem kell aggódnia miattuk.
Mi a különbség az RPC és az RMI között?
• Az RPC nyelv semleges, míg az RMI a Java-ra korlátozódik.
• Az RPC eljárásjogi, mint a C-ben, de az RMI objektumorientált.
• Az RPC csak primitív adattípusokat támogat, míg az RMI lehetővé teszi az objektumok argumentumként és visszatérési értékként történő továbbítását. RPC használatakor a programozónak fel kell osztania az összes összetett objektumot primitív adattípusokra.
• Az RMI könnyen programozható az RPC-re.
• Az RMI lassabb, mint az RPC, mivel az RMI java bytecode végrehajtásával jár.
• Az RMI lehetővé teszi a tervezési minták használatát az objektumorientált természet miatt, miközben az RPC nem rendelkezik ezzel a képességgel.
Összegzés:
RPC vs RMI
Az RPC egy nyelv semleges mechanizmus, amely lehetővé teszi az eljárás meghívását egy távoli számítógépen. A nyelv semleges funkció azonban korlátozza az argumentumként átadott adattípusokat, és az értékeket primitív típusokhoz adja vissza. Az RMI az RPC megvalósítása a Java-ban, és támogatja az objektumok átadását is, megkönnyítve ezzel a programozó életét. Az RMI előnye az objektum-orientált tervezési támogatás, de a Java-ra való korlátozás hátrány.
Képek jóvoltából: