Preporučeno, 2024

Izbor Urednika

Razlika između RPC i RMI

RPC i RMI su mehanizmi koji omogućuju klijentu pozivanje postupka ili metode s poslužitelja uspostavljanjem komunikacije između klijenta i poslužitelja. Zajednička razlika između RPC i RMI je u tome što RPC podržava samo proceduralno programiranje, dok RMI podržava objektno orijentirano programiranje .

Još jedna velika razlika između njih je ta da se parametri proslijeđeni pozivima udaljenih procedura sastoje od običnih struktura podataka . S druge strane, parametri preneseni na udaljenu metodu sastoje se od objekata .

Tablica usporedbe

Osnova za usporedbuRPCRMI
podržavaProceduralno programiranje
Objektno orijentirano programiranje
parametriObične strukture podataka prosljeđuju se udaljenim procedurama.Objekti se prosljeđuju udaljenim metodama.
efikasnostNiže od RMIViše od RPC-a i podržani suvremenim programskim pristupom (tj. Objektno-orijentiranim paradigmama)
opći troškoviViše
Manje usporedno
In-out parametri su obvezni.DaNije nužno
Pružanje jednostavnosti programiranja
visok
nizak

Definicija RPC-a

Remote Procedure Call (RPC) je značajka programskog jezika osmišljena za distribuirano računalstvo i temelji se na semantici poziva lokalnih postupaka . To je najčešći oblik udaljene usluge i osmišljen je kao način apstrahiranja mehanizma poziva na korištenje između sustava povezanih putem mreže. To je slično IPC mehanizmu gdje operativni sustav dopušta procesima da upravljaju dijeljenim podacima i bave se okruženjem u kojem se različiti procesi izvršavaju na odvojenim sustavima i nužno zahtijevaju komunikaciju utemeljenu na porukama.

Razumimo kako se RPC implementira kroz navedene korake:

  • Klijentski proces poziva klijenta s parametrima i njegovo izvršenje se obustavlja dok se poziv ne dovrši.
  • Parametri se zatim pretvaraju u strojno neovisni oblik raspoređivanjem preko klijentskog umetka. Zatim se priprema poruka koja sadrži prikaz parametara.
  • Da biste pronašli identitet web-lokacije, klijentski komadić komunicira s poslužiteljem imena na kojem postoji udaljena procedura.
  • Korištenje blokiranja protokola klijent stub šalje poruku na mjestu gdje udaljeni postupak poziva postoji. Ovaj korak zaustavlja klijenta dok ne dobije odgovor.
  • Site poslužitelj prima poruku poslanu s klijentske strane i pretvara je u specifičan format stroja.
  • Sada poslužitelj stub izvršava poziv na poslužitelju postupak zajedno s parametrima, a poslužitelj stub je ukinut dok postupak postane dovršen.
  • Postupak poslužitelja vraća generirane rezultate u poslužiteljsku stranicu, a rezultati se pretvaraju u strojno neovisni format na poslužiteljskoj ploči i stvaraju poruku koja sadrži rezultate.
  • Poruka rezultata šalje se na klijentsku stranicu koja se pretvara natrag u specifičan format stroja pogodan za klijentsku stub.
  • Posljednji klijent vraća rezultate u proces klijenta.

Definicija RMI-a

Udaljena metoda pozivanja (RMI) slična je RPC-u, ali je specifična za jezik i značajka jave. Nitima je dopušteno pozvati metodu na udaljenom objektu. Da bi se održala transparentnost na strani klijenta i poslužitelja, ona implementira udaljeni objekt pomoću stubova i skeleta. Stub se nalazi s klijentom, a za udaljeni objekt ponaša se kao proxy.

Kada klijent pozove daljinsku metodu, poziva se udaljeni metod za udaljenu metodu. Klijent je odgovoran za kreiranje i slanje paketa koji sadrži naziv metode i označenih parametara, a kostur je odgovoran za primanje pošiljke.

Skelet uklanja parametre i pokreće željenu metodu na poslužitelju. Kostur dijeli zadanu vrijednost (ili iznimke) s paketom i šalje je klijentu. Stub ponovno sastavlja povratnu parcelu i šalje je klijentu.

U Javi se parametri prosljeđuju metodama i vraćaju se u referentnom obliku. To može biti problematično za RMI uslugu jer nisu svi objekti možda udaljene metode. Dakle, mora odrediti što bi se moglo proslijediti kao referenca, a koje ne.

Java koristi proces nazvan serialization gdje se objekti prosljeđuju kao vrijednost. Udaljeni objekt je lokaliziran pomoću pass by value. Također može proslijediti objekt referencom putem prosljeđivanja udaljene reference na objekt zajedno s URL-om klase stub. Pass by reference ograničava stub za udaljeni objekt.

Ključne razlike između RPC i RMI

  1. RPC podržava proceduralne paradigme programiranja tako da je C-based, dok RMI podržava objektno-orijentirane paradigme programiranja i temelji se na javi.
  2. Parametri proslijeđeni udaljenim postupcima u RPC-u su obične strukture podataka. Naprotiv, RMI prelazi objekte kao parametar na udaljenu metodu.
  3. RPC se može smatrati starijom verzijom RMI-a, a koristi se u programskim jezicima koji podržavaju proceduralno programiranje, a može se koristiti samo metodom pass by value. Nasuprot tome, RMI objekt je osmišljen na temelju suvremenog programskog pristupa, koji bi mogao koristiti pass by value ili reference. Još jedna prednost RMI-a je da se parametri proslijeđeni referencom mogu promijeniti.
  4. RPC protokol generira više troškova nego RMI.
  5. Parametri proslijeđeni u RPC-u moraju biti " in-out ", što znači da vrijednost koja se prosljeđuje postupku i izlaznoj vrijednosti mora imati iste tipove podataka. Nasuprot tome, u RMI -u ne postoji prisiljavanje prosljeđivanja “ in-out ” parametara.
  6. U RPC-u, reference ne mogu biti vjerojatne jer dva procesa imaju različiti adresni prostor, ali je moguće u slučaju RMI-a.

Zaključak

I RPC i RMI služe istoj svrsi, ali se koriste u jezicima koji podržavaju različite paradigme programiranja, stoga imaju različite značajke.

Top