Recomandat, 2024

Alegerea Editorului

Diferența dintre RPC și RMI

RPC și RMI sunt mecanismele care permit unui client să invocă procedura sau metoda de la server prin stabilirea unei comunicări între client și server. Diferența obișnuită dintre RPC și RMI este că RPC suportă numai programarea procedurală, în timp ce RMI susține programarea orientată pe obiecte .

O altă diferență majoră între cei doi este că parametrii transmiși la apelurile de proceduri la distanță constau în structuri obișnuite de date . Pe de altă parte, parametrii transmiși la metoda de la distanță constau în obiecte .

Diagramă de comparație

Bazele de comparațieRPCRMI
suporturiProgramare procedurală
Programarea orientată pe obiecte
ParametriiStructurile de date obișnuite sunt transmise procedurilor la distanță.Obiectele sunt transmise metodelor de la distanță.
EficienţăMai puțin decât RMIMai mult decât RPC și susținută de abordarea modernă de programare (adică paradigme orientate pe obiecte)
Cheltuieli generaleMai Mult
Mai puțin comparativ
Parametrii in-out sunt obligatorii.daNu neaparat
Asigurarea ușurinței de programare
Înalt
scăzut

Definiția RPC

Remote Procedure Call (RPC) este o funcție de limbaj de programare concepută pentru calculul distribuit și bazată pe semantica apelurilor de procedură locală . Este cea mai obișnuită formă de serviciu la distanță și a fost concepută ca o modalitate de a abstracționa mecanismul de apelare a procedurilor de utilizat între sistemele conectate printr-o rețea. Este similar cu mecanismul IPC în care sistemul de operare permite proceselor să gestioneze date partajate și să se ocupe de un mediu în care diferite procese se execută pe sisteme separate și necesită în mod necesar o comunicare bazată pe mesaje.

Să înțelegem modul în care RPC este implementat prin pașii dat:

  • Procesul client solicită blocarea parametrilor clientului și executarea acestuia este suspendată până la terminarea apelului.
  • Parametrii sunt apoi transformați în formă independentă de mașină prin comasarea prin stub client. Apoi, mesajul este pregătit care conține reprezentarea parametrilor.
  • Pentru a identifica identitatea site-ului, clientul stub intercomunică cu serverul de nume la care există o procedură la distanță.
  • Folosind protocolul de blocare, stub-ul clientului trimite mesajul pe site-ul unde există apel de procedură la distanță. Acest pas oprește stubul clientului până când primește un răspuns.
  • Site-ul server primește mesajul trimis de partea clientului și îl convertește în format specific mașinii.
  • Acum serverul stub execută un apel pe procedura serverului împreună cu parametrii, iar serverul de pe server este întrerupt până la finalizarea procedurii.
  • Procedura serverului returnează rezultatele generate la serverul de pe server, iar rezultatele obținute se convertesc în format independent de mașină la stub server și se creează un mesaj care conține rezultatele.
  • Mesajul rezultat este trimis către stub-ul clientului care este convertit înapoi în formatul specific pentru mașină, potrivit pentru stub-ul clientului.
  • La ultimul client, stub returnează rezultatele procesului client.

Definiția RMI

Apelul de metode la distanță (RMI) este similar cu RPC, dar este specific limbii și o caracteristică a java. Un fir este permis să apeleze metoda pe un obiect la distanță. Pentru a menține transparența pe partea clientului și a serverului, acesta implementează obiecte de la distanță folosind obiecte și schelete. Stub-ul se află cu clientul, iar pentru obiectul la distanță se comportă ca proxy.

Atunci când un client apelează o metodă la distanță, se apelează stub-ul pentru metoda de la distanță. Stub-ul clientului este responsabil pentru crearea și trimiterea parcelei care conține numele unei metode și parametrii marșalizați, iar scheletul este responsabil pentru primirea parcelei.

Scheletul schimba parametrii și invocă metoda dorită pe server. Scheletul marchează valoarea (sau excepțiile) dată cu parcela și o trimite către clientul stub. Stubul reasambla pachetul de returnare și îl trimite clientului.

În Java, parametrii sunt transmise metodelor și returnate sub formă de referință. Acest lucru ar putea fi dificil pentru serviciul RMI, deoarece nu toate obiectele sunt posibil metode de la distanță. Deci, trebuie să determine care ar putea fi transmisă ca referință și care nu ar putea.

Java utilizează un proces denumit serializare în cazul în care obiectele sunt transferate ca valoare. Obiectul la distanță este localizat prin trecere prin valoare. De asemenea, poate transmite un obiect prin referință prin transmiterea unei trimiteri la distanță către obiect, împreună cu adresa URL a clasei stub. Treci prin referință restricționează un stub pentru obiectul la distanță.

Diferențe cheie între RPC și RMI

  1. RPC sprijină paradigme de programare procedurală, deci este bazată pe C, în timp ce RMI susține paradigme de programare orientate pe obiect și este bazată pe java.
  2. Parametrii transmiși la procedurile la distanță în RPC sunt structurile obișnuite de date. Dimpotrivă, RMI tranzitează obiectele ca parametru pentru metoda de la distanță.
  3. RPC poate fi considerată versiunea mai veche a RMI și este folosită în limbile de programare care suportă programarea procedurală și poate utiliza doar metoda pass by value. Spre deosebire de aceasta, facilitatea RMI este concepută pe baza unei abordări moderne de programare, care ar putea folosi trecerea prin valoare sau referință. Un alt avantaj al RMI este că parametrii transmiși prin referință pot fi modificați.
  4. Protocolul RPC generează mai multe cheltuieli generale decât RMI.
  5. Parametrii parcurși în RPC trebuie să fie " in-out ", ceea ce înseamnă că valoarea trecută procedurii și valoarea de ieșire trebuie să aibă aceleași tipuri de date. În schimb, nu există nicio obligație de a trece parametrii " în afara " în RMI.
  6. În RPC, referințele nu ar fi probabile deoarece cele două procese au spațiul de adresă distinct, dar este posibil în cazul RMI.

Concluzie

Atât RPC, cât și RMI servesc aceluiași scop, dar sunt utilizate în limbile de sprijin diferite paradigme de programare, prin urmare, au caracteristici distincte.

Top