A távoli eljáráshívás (néha távoli eljáráshívás ; RPC az angol távoli eljáráshívásból ) olyan technológiák osztálya, amelyek lehetővé teszik a programok számára, hogy függvényeket vagy eljárásokat hívjanak meg egy másik címtérben (távoli csomópontokon vagy egy független, harmadik féltől származó rendszerben ugyanazon csomópont). Az RPC technológia megvalósítása jellemzően két összetevőből áll: egy hálózati protokollt az ügyfél-szerver kommunikációhoz és egy objektum- szerializációs nyelvet (vagy struktúrákat a nem objektív RPC-k esetében). A különböző megvalósítások eltérő architektúrával és képességeikben különböznek: egyesek a SOA architektúrát , mások a CORBA -t vagy a DCOM -ot valósítják meg . A szállítási rétegben az RPC-k főként a TCP és UDP protokollokat használják , néhány azonban a HTTP -re épül (ami sérti az ISO/OSI architektúrát , mivel a HTTP eredetileg nem szállítási protokoll).
Számos technológia kínál RPC-t, többek között:
A távoli eljárások meghívásának az az ötlete, hogy az ugyanazon a csomóponton futó programon belüli vezérlés és adatok átvitelének mechanizmusát kiterjesztjük a vezérlés és az adatok hálózaton keresztüli átvitelére. A távoli eljáráshívási eszközöket az elosztott számítástechnika szervezésének és az elosztott kliens-szerver információs rendszerek létrehozásának megkönnyítésére tervezték. Az RPC leghatékonyabb felhasználása azokban az alkalmazásokban érhető el, amelyekben interaktív kommunikáció zajlik a távoli komponensek között, kis válaszidővel és viszonylag kis mennyiségű adatátvitellel. Az ilyen alkalmazásokat RPC-orientáltnak nevezzük.
A távoli eljáráshívás legfontosabb jellemzői:
A távoli hívások megvalósítása sokkal bonyolultabb, mint a helyi eljáráshívások megvalósítása.
Mivel a hívó és a meghívott eljárások különböző csomópontokon futnak, eltérő címterekkel rendelkeznek, és ez problémákat okoz a paraméterek és az eredmények átadásakor, különösen, ha a gépek különböző operációs rendszereket futtatnak, vagy eltérő architektúrájúak (például kis endian vagy little endian használt ). ). Mivel az RPC nem támaszkodhat megosztott memóriára, ez azt jelenti, hogy az RPC-paraméterek nem tartalmazhatnak mutatókat nem verem memóriahelyekre, és a paraméterértékeket át kell másolni egyik számítógépről a másikra. Az eljárás paramétereinek és a végrehajtás eredményének a hálózaton keresztüli másolásához azokat sorba rendezzük .
A helyi hívással ellentétben a távoli eljáráshívás szükségszerűen a hálózati architektúra szállítási rétegét használja (például , TCP ), de ez rejtve marad a fejlesztő elől. Ezenkívül legalább két folyamat vesz részt az RPC megvalósításában - mindegyik csomóponton egy-egy, és ha az egyik összeomlik, akkor a következő helyzetek fordulhatnak elő: ha a hívó eljárás összeomlik, a távolról hívott eljárások elárvulnak, és ha távoli eljárások a hívási eljárások "szegény szüleivé" lesznek, akik hiába várnak a távoli eljárások válaszára.
A programozási nyelvek és a működési környezetek heterogenitásával kapcsolatban számos probléma is felmerül: az egyik programozási nyelvben támogatott adatstruktúrákat és eljáráshívási struktúrákat nem minden más nyelv támogatja ugyanúgy. Így van egy kompatibilitási probléma, amelyet még nem sikerült megoldani sem egy általánosan elfogadott szabvány bevezetésével, sem több, egymással versengő szabvány bevezetésével minden architektúrán és minden nyelven.
Az RPC megvalósítások központi eleme a szállítási alrendszer, amely a kimenő és bejövő kapcsolatok kezeléséért felelős. Funkciói közé tartozik az "üzenethatár" fogalmának támogatása az azt közvetlenül nem támogató szállítási protokollok (TCP) esetében, valamint az azt nem támogató szállítási protokollok garantált kézbesítésének támogatása (UDP).
Szálgyűjtő komponens (csak Callee) – Végrehajtási környezetet biztosít a hálózaton keresztül meghívott kódhoz.
A rendező komponens (a " sorosítással " analóg ) biztosítja, hogy a hívási paraméterek szabványos módon, az architektúrától (különösen a bájtok sorrendjétől egy szóban) független módon legyenek csomagolva egy bájtfolyamba. Különösen hatással lehet a mutatóparaméterek által mutatott tömbökre, karakterláncokra és struktúrákra.
A csomagok titkosításáért és digitális aláírásáért egy külön komponens felelhet .
Külön funkcióblokk a hitelesítés és engedélyezés, amelyek a hívó alanyt azonosító információ továbbítását biztosítják a hálózaton.
Az RPC (.NET Remoting) egyes megvalósításaiban az alrendszer határai nyitott polimorf interfészek, és szinte az összes felsorolt alrendszerhez saját implementáció írható. Más megvalósításokban (Windows rendszeren a DCE RPC) ez nem így van.
TCP / IP protokollok az OSI modell rétegei szerint | Alapvető|
---|---|
Fizikai | |
csatornázott | |
hálózat | |
Szállítás | |
ülés | |
Reprezentáció | |
Alkalmazott | |
Egyéb alkalmazva | |
A TCP és UDP portok listája |