Remote procedure call

A Wikipédiából, a szabad enciklopédiából
(RPC szócikkből átirányítva)

A Remote Procedure Call (röviden: RPC, "távoli eljáráshívás") olyan, processzek közti kommunikáció adott programban, mely szerint egy függvény vagy procedúra egy másik címtartományban fut (általában másik számítógépen) anélkül, hogy a programozó definiálná ezen kommunikáció működésének részleteit. Tehát a programozó megírja a kódot, és nem kell törődnie azzal, hogy a kód a lokális vagy egy távoli számítógépen fog-e futni.

Jelenleg számos (gyakran egymással nem kompatibilis) rendszer létezik, mely ezt megvalósítja.

Múltja[szerkesztés]

A RPC ötlete legalább 1976-re megy vissza, amikor először leírták az RFC 707 dokumentumban. Egyik legelső ipari használata a Xerox "Courier"-je volt 1981-ben. Az első elterjedtebb használata az Unix operációs rendszereken a Sun RPC volt (jelenleg ONC RPC-nek nevezik), melyet később az NFS alapjául használták föl.

Egy másik Unix-alapú kivitelezés az Apollo Computers által fejlesztett Network Computing System (NCS) volt. Az NCS-t a DCE/RPC alapjául használták. Tíz évvel később a Microsoft felhasználta a DCE/RPC-t a saját Microsoft RPC (MSRPC) mechanizmusának kifejlesztésére, majd erre került a DCOM rendszer. Körülbelül abban az időben jelent meg a CORBA is, amely olyan RPC megoldás volt, mely elosztott objektumokon és öröklődésen alapult.

Üzenetküldés[szerkesztés]

Az RPC-t a kliens kezdeményezi, mely küld egy üzenetet egy ismert szervernek, hogy hajtson végre egy meghatározott procedúrát a megadott paraméterekkel. A szerver visszaüzeni a választ a kliensnek, és a program folytatja a munkáját. Számos kisebb eltérés van a RPC különböző kivitelezései közt, emiatt létezik számos nem kompatibilis RPC protokoll. Amíg a szerver feldolgozza a hívást, addig a kliens blokkolva van (vár, amíg a szerver be nem fejezi a munkáját - szinkron hívás).

A lényeges különbség a lokális és a távoli eljáráshívások között az, hogy a távoli hívások sikertelenek lehetnek hálózati okok miatt is.

Hivatkozások[szerkesztés]