Diferența dintre RPC și RMI

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 11 Mai 2024
Anonim
Moartea din Est? China ar putea avea 1.000 de focoase nucleare până în 2030
Video: Moartea din Est? China ar putea avea 1.000 de focoase nucleare până în 2030

Conţinut


RPC și RMI sunt mecanismele care permit unui client să invoce procedura sau metoda de la server prin stabilirea comunicării între client și server. Diferența comună între RPC și RMI este că RPC acceptă doar programare procedurală în timp ce RMI suportă programare orientată pe obiecte.

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

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza de comparațieRPCRMI
suporturiProgramare procedurală
Programare orientată pe obiecte
ParametriiStructurile obișnuite de date sunt trecute la proceduri la distanță.Obiectele sunt trecute la metode la distanță.
EficienţăMai mic decât RMIMai mult decât RPC și susținut de o abordare modernă de programare (adică paradigme orientate pe obiect)
Cheltuieli generaleMai Mult
Mai puțin comparativ
Parametrii de ieșire sunt obligatorii.daNu neaparat
Asigurarea ușurinței programării
Înalt
scăzut


Definiția RPC

Apel de procedură la distanță (RPC) este o caracteristică de limbaj de programare concepută pentru calculul distribuit și bazată pe semantică procedura locala apeluri. Este cea mai obișnuită formă de serviciu de la distanță și a fost concepută ca o modalitate de a abstractiza mecanismul de apel de procedură pentru a utiliza î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 se execută diferite procese pe sisteme separate și necesită în mod necesar o comunicare bazată pe.

Să înțelegem cum se implementează RPC prin etapele date:

  • Procesul client apelează butonul client cu parametri, iar execuția acestuia este suspendată până la finalizarea apelului.
  • Parametrii sunt apoi transferați într-o formă independentă de mașină prin marșare prin butonul clientului. Apoi, este pregătit care conține reprezentarea parametrilor.
  • Pentru a găsi identitatea site-ului, clientul se intercomunică cu serverul de nume la care există procedura de la distanță.
  • Utilizând protocolul de blocare, clientul se conectează la site-ul unde există un apel de procedură de la distanță. Acest pas oprește stubul clientului până când primește o răspuns.


  • Site-ul serverului primește trimisul din partea clientului și îl convertește în format specific mașinii.
  • Acum stubul serverului execută un apel pe procedura serverului împreună cu parametrii, iar stub-ul serverului este întrerupt până la finalizarea procedurii.
  • Procedura serverului returnează rezultatele generate în stucul serverului, iar rezultatele devin convertite în format independent de mașină la stubul serverului și creează o conținere a rezultatelor.
  • Rezultatul este trimis la butonul client, care este transformat în format specific pentru mașină adecvat pentru butonul client.
  • La ultimul client, stub returnează rezultatele procesului de client.

Definiția RMI

Invocarea metodei la distanță (RMI) este similar cu RPC, dar este specific limbii și o caracteristică a java. Un thread este permis să apeleze metoda pe un obiect de la distanță. Pentru a menține transparența pe partea clientului și a serverului, implementează obiecte la distanță folosind cioturi și scheleturi. Stubul se află cu clientul și pentru obiectul de la distanță se comportă ca un proxy.

Când un client apelează la o metodă de la distanță, este apelat butonul pentru metoda de la distanță. Cercul de clienți răspunde pentru crearea și ingerarea coletului care conține numele unei metode și parametrii Marshalled, iar scheletul este responsabil de primirea coletului.

Scheletul dezarmează parametrii și invocă metoda dorită pe server. Scheletul marșalizează valoarea dată (sau excepții) cu coletul și o însoțește în cercul clientului. Butonul reasamblează coletul de retur și îl trimite clientului.

În Java, parametrii sunt trecuți la metode și returnați sub formă de referință. Acest lucru poate fi deranjant pentru serviciul RMI, deoarece nu toate obiectele sunt posibile metode la distanță. Deci, trebuie să stabilească care ar putea fi transmis ca referință și care nu.

Java folosește procesul numit ca serializarea unde obiectele sunt trecute ca valoare. Obiectul de la distanță este localizat prin pas cu valoare. De asemenea, poate trece un obiect prin referință, trecând o referință de la distanță la obiect împreună cu adresa URL a clasei de stub. Trecerea de referință restricționează un butuc pentru obiectul de la distanță.

  1. RPC acceptă paradigme de programare procedurale, deci este bazat pe C, în timp ce RMI acceptă paradigme de programare orientate pe obiect și este bazat pe java.
  2. Parametrii trecuți la procedurile de la distanță în RPC sunt structurile obișnuite de date. Dimpotrivă, RMI tranzitează obiectele ca parametru la metoda de la distanță.
  3. RPC poate fi considerat ca versiunea mai veche a RMI și este utilizat în limbajele de programare care acceptă programarea procedurală și poate utiliza doar metoda de trecere prin valoare. Spre deosebire de aceasta, facilitatea RMI este concepută pe baza unei abordări moderne de programare, care ar putea folosi pas cu valoare sau referință. Un alt avantaj al RMI este că parametrii trecuți de referință pot fi schimbați.
  4. Protocolul RPC generează mai multe overheads decât RMI.
  5. Parametrii trecuți în RPC trebuie să fie „în afară”Ceea ce înseamnă că valoarea trecută la procedură și valoarea de ieșire trebuie să aibă aceleași tipuri de date. În schimb, nu există nicio constrângere de a trece „în afară”Parametrii în RMI.
  6. În RPC, referințele nu ar putea fi probabile, deoarece cele două procese au spațiul de adrese distincte, dar este posibil în cazul RMI.

Concluzie

Atât RPC cât și RMI îndeplinesc același scop, dar sunt utilizate în limbile care acceptă diferite paradigme de programare, prin urmare au caracteristici distincte.