RPC pret RMI
Pamata atšķirība starp RPC un RMI ir tāda, ka RPC ir mehānisms, kas ļauj izsaukt procedūru uz attālā datora, savukārt RMI ir RPC ieviešana Java. RPC ir valoda neitrāla, bet atbalsta tikai primitīvus datu tipus, kas jānodod. No otras puses, RMI aprobežojas ar Java, bet ļauj nodot objektus. RPC ievēro tradicionālās procesuālās valodas konstrukcijas, savukārt RMI atbalsta objektorientētu dizainu.
Kas ir RPC?
RPC, kas nozīmē attālās procedūras izsaukumu, ir starpprocesu komunikācijas veids. Tas ļauj izsaukt funkciju citā procesā, kas darbojas lokālajā datorā vai attālajā datorā. Šī koncepcija parādījās jau sen, 1980. gadā, bet pirmā slavenā ieviešana tika parādīta Unix.
RPC ietver vairākus posmus. Klients veic procedūras izsaukumu lokālajā datorā kā parasti. Modulis, ko sauc par klienta stublāju, apkopo argumentus un izveido ziņojumu un nodod to operētājsistēmai. Operētājsistēma veic sistēmas zvanu 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 stublāju. Tad servera stublājs izsauc servera procedūru. 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 detaļām. Programmētājam vienkārši abstrakti jānorāda, kamēr operētājsistēma rūpēsies par iekšējā tīkla detaļām. Tātad tas atvieglo programmēšanu un ļauj RPC darboties jebkurā tīklā, neskatoties uz fiziskajām un protokola atšķirībām. RPC ieviešana ir visās galvenajās operētājsistēmās, piemēram, Unix, Linux, Windows un OS X. RPC parasti ir neitrāla valodai, tāpēc tā ierobežo datu tipus līdz primitīvākajiem, jo tiem jābūt kopīgiem visām valodām. RPC pieeja nav orientēta uz objektu, bet tā ir tradicionāls procesuālais mehānisms kā C.
Kas ir RMI?
RMI, kas nozīmē Remote Method Invocation, ir API (lietojumprogrammu saskarne), kas ievieš RPC Java valodā, lai atbalstītu uz objektu orientētu raksturu. Tas ļauj izsaukt Java metodes citā Java virtuālajā mašīnā, kas atrodas tajā pašā vai attālajā datorā. RMI ierobežojums ir tāds, ka var izmantot tikai Java metodes, taču tam ir priekšrocība, ka objektus var nodot kā argumentus un atgriezt vērtības. Ja tiek uzskatīts, ka veiktspēja ir RMI ir lēnāka nekā RPC, jo Java virtuālajā mašīnā ir iesaistīts baitkods, bet RMI ir ļoti draudzīgs programmētājiem un to ir ļoti viegli izmantot.
RMI Java izmanto iebūvētos drošības mehānismus, kā arī nodrošina ligzdu rūpnīcu, kas ļauj izmantot ar TCP nesaistītus pielāgotus transporta slāņa protokolus. Turklāt RMI nodrošina metodes, kā apiet ugunsmūrus. RMI veiktās darbības ir līdzīgas RPC. RMI ieviešana rūpējas par iekšējā tīkla detaļām, kur programmētājam par tām nav jāuztraucas.
Kāda ir atšķirība starp RPC un RMI?
• RPC ir valodas neitrāls, savukārt RMI ir ierobežots 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 atgriezt vērtības. Izmantojot RPC, programmētājam visi saliktie objekti jāsadala primitīviem datu tipiem.
• RMI ir viegli programmēt šo RPC.
• RMI ir lēnāks nekā RPC, jo RMI ietver java baitkoda izpildi.
• RMI ļauj izmantot dizaina modeļus objektorientētā rakstura dēļ, savukārt RPC nav šīs iespējas.
Kopsavilkums:
RPC pret RMI
RPC ir valoda neitrāls mehānisms, kas ļauj izsaukt procedūru attālā datorā. Valodas neitrālā funkcija ierobežo datu tipus, kas tiek pārsūtīti kā argumenti, un atgriež vērtības primitīviem tipiem. RMI ir RPC ieviešana Java, un tā atbalsta arī objektu nodošanu, atvieglojot programmētāja dzīvi. RMI priekšrocība ir objektorientēts dizaina atbalsts, bet ierobežojums Java ir trūkums.
Attēli Pieklājība: