A két másik fontos különbség az, hogy a távoli eljárások hívására átadott paraméterek szokásos adatstruktúrákból állnak. Másrészt a távoli módszerre átadott paraméterek objektumokból állnak.
Összehasonlító táblázat
Az összehasonlítás alapja | RPC | RMI |
---|---|---|
támaszok | Eljárási programozás | Objektumorientált programozás |
paraméterek | A szokásos adatstruktúrák távoli eljárásokhoz kerülnek átadásra. | Az objektumok távoli módszerekre kerülnek átadásra. |
Hatékonyság | Alacsonyabb, mint az RMI | Több, mint az RPC és a modern programozási megközelítés (azaz az objektum-orientált paradigmák) támogatása |
Általános költségek | Több | Kevésbé viszonylag |
A kimeneti paraméterek kötelezőek. | Igen | Nem feltétlenül |
Könnyű programozás | Magas | alacsony |
Az RPC meghatározása
A távoli eljáráshívás (RPC) egy olyan programozási nyelv, amely az elosztott számítástechnikára és a helyi eljáráshívások szemantikájára épül. Ez a távoli szolgáltatás leggyakoribb formája, és úgy lett kialakítva, hogy elvonja a hálózaton keresztül összekapcsolt rendszerek közötti eljáráshívási mechanizmust. Hasonló az IPC-mechanizmushoz, ahol az operációs rendszer lehetővé teszi a folyamatok számára a megosztott adatok kezelését és olyan környezetek kezelését, ahol a különböző folyamatok külön rendszereken futnak, és szükségszerűen üzenetalapú kommunikációt igényelnek.
Tegyük fel, hogy az RPC-t hogyan hajtják végre az adott lépésekben:
- Az ügyfélprocesszor az ügyfél stubját paraméterekkel hívja, és végrehajtását a hívás befejezéséig felfüggesztik.
- Ezután a paramétereket gépi független formába fordítják az ügyfél stub-ján keresztül rendezve. Ezután elkészül az üzenet, amely tartalmazza a paraméterek ábrázolását.
- A webhely azonosságának megkeresése a kliens által összekapcsolt névkiszolgálóval, amelyen a távoli eljárás létezik.
- A blokkolási protokoll használatával az ügyfél stub elküldi az üzenetet arra a helyre, ahol a távoli eljáráshívás létezik. Ez a lépés megállítja az ügyfélcsonkot, amíg nem kap választ.
- A kiszolgáló oldal megkapja az ügyféloldalról küldött üzenetet, és konvertálja azt gépspecifikus formátumra.
- Most a szerver stub végrehajtja a hívást a kiszolgálói eljáráson a paraméterekkel együtt, és a kiszolgáló stubját megszakítjuk, amíg az eljárás befejeződik.
- A szerver eljárás visszaadja a generált eredményeket a szerver stub-ra, és az eredmények konvertálóvá válnak a szerver stubban, és létrehozzák az eredményeket tartalmazó üzenetet.
- Az eredményüzenetet elküldjük a kliens csonknak, amely az ügyfélcsonknak megfelelő gépi formátumra alakul át.
- Végül az ügyfél, a stub visszaadja az eredményeket az ügyfél folyamatának.
Az RMI meghatározása
A Remote Method Invocation (RMI) hasonló az RPC-hez, de a nyelvi és a java jellemzője. A szál engedélyezett a módszer távoli objektumon való hívása. Az ügyfél és a kiszolgáló oldalának átláthatóságának fenntartása érdekében távoli objektumot hajt végre a csonkokkal és a csontvázakkal. A csonk az ügyfélhez tartozik, és a távoli objektumhoz proxyként viselkedik.
Amikor egy kliens távoli eljárást hív, a távoli módszer csonkját hívják. A kliens csonkja felelős a csomag nevének létrehozásáról és küldéséről, amely tartalmazza a módszer nevét és a rendezett paramétereket, és a csontváz felelős a csomag fogadásáért.
Java-ban a paraméterek átadódnak a módszereknek, és visszatérési formában kerülnek visszaadásra. Ez problémát jelenthet az RMI szolgáltatás számára, mivel nem minden objektum lehet távoli módszer. Tehát meg kell határoznia, hogy melyik referenciaként adható meg, és amely nem.
A Java a sorosításnak nevezett folyamatot használja, ahol az objektumok értékként kerülnek átadásra. A távoli objektum az érték szerinti érték alapján kerül lokalizálásra. Az objektumot referencián keresztül is továbbíthatja egy távoli hivatkozás átadásával az objektumhoz, valamint a stub osztály URL-jével együtt. A referenciakeresés korlátozza a távoli objektum csonkját.
Az RPC és az RMI közötti különbségek
- Az RPC támogatja az eljárási programozási paradigmákat, így C alapú, míg az RMI támogatja az objektum-orientált programozási paradigmákat, és a java alapú.
- Az RPC-ben távoli eljárásokhoz továbbított paraméterek a szokásos adatstruktúrák. Éppen ellenkezőleg, az RMI átmásol egy objektumot mint paramétert a távoli módszerhez.
- Az RPC az RMI régebbi verziójának tekinthető, és az eljárási programokat támogató programozási nyelvekben használják, és csak az átviteli érték módszert használhatja. Ezzel szemben az RMI létesítményt a modern programozási megközelítés alapján alakították ki, amely értéket vagy referenciát használhat. Az RMI másik előnye, hogy a referencia által átadott paraméterek megváltoztathatók.
- Az RPC protokoll több általános költséget generál, mint az RMI.
- Az RPC-ben átadott paramétereknek „ in-out ” -nak kell lenniük , ami azt jelenti, hogy az eljáráshoz továbbított értéknek és a kimeneti értéknek azonos adattípusokkal kell rendelkeznie. Ezzel ellentétben nincs kényszer az „ in-out ” paraméterek átadására az RMI-ben.
- Az RPC-ben a hivatkozások nem valószínűek, mert a két folyamatnak külön címtartománya van, de lehetséges az RMI esetében.
Következtetés
Mind az RPC, mind az RMI ugyanazt a célt szolgálja, de a nyelvek különböző programozási paradigmákat támogatnak, ezért különböző jellemzőkkel rendelkeznek.