Diferența dintre RPC și RMI

RPC vs. RMI
 

Diferența de bază dintre RPC și RMI este că RPC este un mecanism care permite apelarea unei proceduri pe un computer la distanță, în timp ce RMI este implementarea RPC în Java. RPC este neutră în funcție de limbă, dar acceptă numai tipuri primitive de date care trebuie transferate. Pe de altă parte, RMI este limitată la Java, dar permite trecerea obiectelor. RPC urmează construcțiile tradiționale de limbaj procedural, în timp ce RMI susține proiectarea orientată pe obiecte.

Ce este RPC?

RPC, care reprezintă procedura de apel la distanță, este un tip de comunicare interproces. Aceasta permite apelarea unei funcții într-un alt proces care rulează pe computerul local sau pe un computer la distanță. Acest concept a apărut cu mult timp în urmă în 1980, dar prima realizare celebră a fost văzută în Unix.

RPC implică mai mulți pași. Clientul face o procedură de apel la computerul local ca de obicei. Modulul numit client stub colectează argumentele și creează un mesaj și trece la sistemul de operare. Sistemul de operare face un apel sistem și trimite acest mesaj la computerul la distanță. Sistemul de operare din server colectează mesajul și trece la modulul de pe server numit server stub. Apoi serverul stub apelează procedura de pe server. În cele din urmă, rezultatele sunt trimise înapoi clientului.

Avantajul utilizării RPC este că este independent de detaliile rețelei. Programatorul trebuie doar să specifice într-un mod abstract, în timp ce sistemul de operare va avea grijă de detaliile rețelei interne. Deci, acest lucru face ca programarea să fie mai ușoară și permite RPC să lucreze în orice rețea în ciuda diferențelor fizice și de protocol. Implementările RPC sunt prezente în toate sistemele de operare obișnuite, cum ar fi Unix, Linux, Windows și OS X. RPC este în general neutru din punct de vedere lingvistic, prin urmare limitează tipurile de date la cele mai primitive, deoarece acestea trebuie să fie comune tuturor limbilor. Abordarea în RPC nu este orientată obiect, ci este un mecanism procedural tradițional ca în C.

Ce este RMI?

RMI, care se referă la Remote Method Invocation, este un API (Application Programming Interface) care implementează RPC în Java pentru a susține natura orientată spre obiect. Aceasta permite apelarea metodelor Java pe o altă mașină virtuală Java localizată pe același computer sau una la distanță. Limitarea RMI este că numai metode Java pot fi invocate, dar acest lucru are avantajul că obiectele pot fi transferate ca argumente și valori returnate. Când performanța este considerată ca RMI este mai lentă decât RPC datorită implicării bytecode pe mașina Java Virtual, dar RMI este foarte prietenoasă cu programatorul și este foarte ușor de utilizat.

RMI folosește mecanisme de securitate încorporate în Java și oferă, de asemenea, o fabrică socket care permite utilizarea protocoalelor non-TCP personalizate de transport. Mai mult decât atât, RMI oferă metode de ocolire a firewall-urilor. Pașii care apar în RMI sunt similare cu RPC. Implementarea RMI se ocupă de detaliile rețelei interne în care programatorul nu trebuie să-și facă griji în privința lor.

Care este diferența dintre RPC și RMI?

• RPC este neutru în timp ce RMI este limitat la Java.

• RPC este procedural ca în C, dar RMI este orientat obiect.

• RPC acceptă numai tipuri de date primitive, în timp ce RMI permite ca obiectele să fie transferate ca argumente și valori returnate. Când utilizați RPC, programatorul trebuie să împartă orice obiecte compuse în tipuri primitive de date.

• RMI este ușor de programat RPC-ul.

• RMI este mai lent decât RPC, deoarece RMI implică executarea bytecode-ului java.

• RMI permite utilizarea modelelor de design datorită naturii orientate spre obiecte în timp ce RPC nu are această capacitate.

Rezumat:

RPC vs. RMI

RPC este un mecanism neutru lingvistic care permite apelarea unei proceduri pe un computer la distanță. Cu toate acestea, caracteristica limită neutră limitează tipurile de date care sunt transmise ca argumente și returnează valorile tipurilor primitive. RMI este implementarea RPC în Java și susține și trecerea obiectului, făcând viața programatorului mai ușoară. Avantajul RMI este suportul de design orientat pe obiecte, însă limitarea la Java este un dezavantaj.

Imagini Amabilitate:

  1. Sincron față de RPC asincron de CAPS entreprise (CC BY-SA 3.0)