Copyright , 1996. Csizmazia Balázs /az anyag szabadon terjeszthető/
[...] Az anyagban közölt információk helyességéért senki sem vállal felelősséget (habár a szerző minden tőle telhetőt megtett, a közölt információk helyességéért).
[...]
A távoli eljáráshívás során egy másik, hálózatba kapcsolt számítógépen levő eljárást (alprogramot) hívhatunk meg: természetesen nem arról van szó, hogy a távoli gépről letöltődik az eljárás futtatható formája, és a helyi processzor azt valahogyan - monjduk utasítás-szimulációval - megpróbálja végrehajtani. A távoli eljáráshívás során a hívó program felfüggesztődik, majd a hívott alprogramnak átadásra kerülnek a paraméterek, és az elkezd futni mialatt a hívó futása felfüggesztődik. A hívott alprogram befejeződése után a visszatérési értékét átadja a hívónak, ami azután folytathatja a futását.
A távoli eljáráshívás esetén a hívó és a hívott alprogram nem feltétlenül ugyanazon a számítógépen helyezkednek el, így a paraméterátadásra valamilyen hálózati kommunikációs eszközt kell igénybe venni (például a TCP vagy az UDP protokollt).
A távoli eljáráshívás számos olyan problémát felvet, ami helyi eljáráshívás esetén nem merül fel; egyrészt azért, mert a hálózat nem tökéletesen megbízható (el is romolhat), másrészt pedig az egyes számítógépek belső adatábrázolási formája eltérő (gondoljunk arra, hogy a több-byteos egészeket alkotó byteokat az Intel 80386 és a Motorola 68030 más-más bytesorrendben tárolja), sőt a bonyolultabb adattípusok belső ábrázolása sem kell, hogy megegyezzen! A távoli eljáráshívás esetén a pointer-átadás is egy igen problémás témakör (gondoljuk csak meg, hogy a hívott alprogram egy másik gépen is futhat, más memóriatérképpel rendelkezik: a memóriacímeknek (így a pointereknek is) csak egy programon belül lehet valami információhordozó szerepe).
A távoli eljáráshívási rendszereket - attól függően, hogy hogyan reagálnak a hálózat hibájából eredő hatásokra - három kategóriába szokás sorolni:
A legalább egyszer történő eljárásvégrehajtási szemantikával rendelkező rendszerek a távoli eljárás végrehajtását szükség esetén egészen addig ismétlik, amíg egy nyugtát nem kapnak a távoli eljárást futtató számítógéptől az eljárás sikeres lefutásáról. Természetesen itt történhetnek félreértések is: ha a távoli eljárás végrehajtódott, de az ezt jelző nyugta elveszik vagy később jön, mint az a hívó eljárás várja, akkor a hívó nem tudja, hogy mi történt (hogy egyáltalán elindult-e a távoli eljárás vagy sikeresen végre lett hajtva, és ,,csak'' a nyugta veszett el), ekkor a művelet újraindítása veszélyes lehet, hacsak nem egy idempotens műveletről van szó, amit büntetés nélkül akárhányszor végre lehet hajtani. Például nem idempotens művelet egy bankszámláról 1000 forint levétele: ha ezt a műveletet kétszer végrehajtjuk, akkor már 2000 forintot veszünk le a bankszámláról; idempotens művelet például egy bankszámla állapotának lekérdezése (ezt akárhányszor megismételhetjük; nem ártunk vele senkinek - legfeljebb a hálózati forgalmat növelhetjük vele).
A legfeljebb egyszer történő eljáráshívási szemantikájú rendszerek a távoli eljáráshívást egyszer végrehajtják, és többször meg sem próbálják.
Nyilvánvalóan a pontosan egyszer történő végrehajtás lenne az elérendő cél, de ez általában nem megvalósítható (a hálózat hibáival mindig számolni kell, és jól működő hálózat esetén is nehéz egy értelmes időkorlátot adni arra vonatkozóan, hogy a távoli eljárás végrehajtásáról visszaküldött nyugta legkésőbb mennyi idő múlve kell, hogy megérkezzen).
A távoli eljáráshívás terminológiájában a hívót nevezik kliensnek, a hívott alprogramot pedig szervernek. A szerver nem feltétlenül azon a számítógépen fut, amely a klienst futtatja, így a kliensnek a távoli eljárás végrehajtása előtt meg kell keresnie azt, hogy melyik számítógép szolgáltatja a számára szükséges távoli eljárásokat. Ezt a folyamatot, amikor a kliens megkeresi a szervert, és felveszi vele a kapcsolatot, kötésnek nevezik.