Starpība starp RPC un RMI

RPC vs RMI
 

Galvenā atšķirība starp RPC un RMI ir tā, ka RPC ir mehānisms, kas ļauj izsaukt procedūru attālā datorā, kamēr RMI ir RPC ieviešana Java. RPC ir valodas neitrāla, bet atbalsta tikai primitīvos datu tipus, kas jānodod. No otras puses, RMI ir ierobežota ar Java, bet ļauj nodot objektus. RPC seko tradicionālajām procesuālās valodas konstrukcijām, bet RMI atbalsta uz objektu orientētu dizainu.

Kas ir RPC?

RPC, kas apzīmē Remote Procedure Call, ir starpprocesuālās saziņas veids. Tas ļauj izsaukt funkciju citā procesā, kas darbojas lokālajā datorā vai attālajā datorā. Šī koncepcija radās jau sen, 1980. gadā, bet pirmā slavenā ieviešana tika novērota Unix.

RPC ietver vairākas darbības. Kā parasti, klients veic procedūras izsaukumu uz vietējo datoru. Modulis, ko sauc par klienta veidni, vāc argumentus un izveido ziņojumu un nodod operētājsistēmai. Operētājsistēma veic sistēmas izsaukumu un nosūta šo ziņojumu uz attālo datoru. Operētājsistēma serverī apkopo ziņojumu un pāriet uz servera moduli, ko sauc par servera nepilnību. Tad servera nepilnības izsauc procedūru uz servera. Visbeidzot, rezultāti tiek nosūtīti atpakaļ klientam.

RPC izmantošanas priekšrocība ir tā, ka tā ir neatkarīga no tīkla informācijas. Programmētājam ir tikai jānorāda abstrakts veids, kamēr operētājsistēma rūpēsies par iekšējā tīkla informāciju. Tas atvieglo programmēšanu un ļauj RPC darboties jebkurā tīklā, neskatoties uz fizikālajām un protokola atšķirībām. RPC ieviešana ir sastopama visās galvenajās operētājsistēmās, piemēram, Unix, Linux, Windows un OS X. RPC parasti ir valodas ziņā neitrāla, tāpēc tā ierobežo datu tipus līdz primitīvākajiem, jo ​​tiem jābūt kopīgiem visās valodās. RPC pieeja nav orientēta uz objektu, bet tas ir tradicionāls procesuāls mehānisms, piemēram, C gadījumā.

Kas ir RMI?

RMI, kas apzīmē Remote Method Invocation, ir API (lietojumprogrammu programmēšanas interfeiss), kas ievieš RPC javā, lai atbalstītu uz objektu orientētu raksturu. Tas ļauj izsaukt Java metodes citā Java virtuālajā mašīnā, kas atrodas tajā pašā datorā vai attālajā. RMI ierobežojums ir tāds, ka var atsaukties tikai uz Java metodēm, taču tam ir priekšrocība, ka objektus var nodot kā argumentus un atgriešanās vērtības. Ja veiktspēja tiek uzskatīta par RMI, lēnāka nekā RPC, jo bytekods ir iesaistīts Java virtuālajā mašīnā, bet RMI ir ļoti draudzīga programmētājam, un to ir ļoti viegli izmantot.

RMI izmanto Java iebūvētus drošības mehānismus un dod arī kontaktligzdas rūpnīcu, kas ļauj izmantot ne-TCP pielāgotos transporta slāņa protokolus. Turklāt RMI nodrošina metodes ugunsmūru apiešanai. Darbības, kas notiek RMI, ir līdzīgas RPC. RMI ieviešana rūpējas par iekšējā tīkla detaļām, ja programmētājam par tām nav jāuztraucas.

Kāda ir atšķirība starp RPC un RMI?

• RPC ir valodas neitrāla, savukārt RMI ir ierobežota ar Java.

• RPC ir procesuāla kā C, bet RMI ir orientēta uz objektu.

• RPC atbalsta tikai primitīvus datu tipus, savukārt RMI ļauj objektus nodot kā argumentus un atgriešanās vērtības. Izmantojot RPC, programmētājam jāsadala visi saliktie objekti primitīvajos datu tipos.

• RMI ir viegli ieprogrammēt šo RPC.

• RMI ir lēnāks nekā RPC, jo RMI ir saistīta ar java baitkoda izpildi.

• RMI ļauj izmantot dizaina modeļus objektorientētā rakstura dēļ, kamēr RPC nav šādas iespējas.

Kopsavilkums:

RPC vs RMI

RPC ir valodā neitrāls mehānisms, kas ļauj izsaukt procedūru attālajā datorā. Tomēr valodas neitrālā funkcija ierobežo datu tipus, kas tiek nodoti kā argumenti, un atgriež vērtības primitīvajiem tipiem. RMI ir RPC ieviešana Java un atbalsta arī objektu pārvietošanu, padarot programmētāja dzīvi vieglāku. RMI priekšrocība ir uz objektu orientēts dizaina atbalsts, bet ierobežojums Java ir trūkums.

Attēli pieklājīgi:

  1. CAPS uzņēmuma sinhronā pret asinhrono RPC (CC BY-SA 3.0)