RPC vs RMI
Põhiline erinevus RPC ja RMI vahel seisneb selles, et RPC on mehhanism, mis võimaldab protseduuri kutsuda kaugarvutis, samal ajal kui RMI on RPC juurutamine Java-s. RPC on keeleneutraalne, kuid toetab ainult edastatavaid primitiivseid andmetüüpe. Teiselt poolt on RMI piiratud Java-ga, kuid võimaldab objekte edasi anda. RPC järgib traditsioonilisi protseduurilisi keelekonstruktsioone, samas kui RMI toetab objektorienteeritud kujundust.
Mis on RPC?
RPC, mis tähistab kaugprotseduuri kõnet, on protsessidevaheline suhtlus. See võimaldab funktsiooni kutsuda mõnes teises protsessis, mis töötab kohalikus arvutis või kaugarvutis. See kontseptsioon tekkis juba ammu 1980. aastal, kuid esimest kuulsat rakendust nähti Unixis.
RPC hõlmab mitut etappi. Klient teeb kohalikus arvutis tavapärase protseduurikõne. Moodul nimega kliendi tüvi koguvad argumendid ja loovad teate ning edastavad selle operatsioonisüsteemile. Operatsioonisüsteem teeb süsteemikõne ja saadab selle sõnumi kaugarvutisse. Serveris asuv operatsioonisüsteem kogub sõnumi ja läheb serveri moodulile, mida nimetatakse serveri tüveks. Seejärel kutsub serveri stub serveris toimuvat protseduuri. Lõpuks saadetakse tulemused kliendile tagasi.
RPC kasutamise eeliseks on see, et see on võrgu üksikasjadest sõltumatu. Programmeerija peab lihtsalt abstraktselt määratlema, samal ajal kui operatsioonisüsteem hoolitseb sisevõrgu üksikasjade eest. Nii et see muudab programmeerimise lihtsamaks ja võimaldab RPC-l töötada füüsiliselt ja protokolli erinevustest hoolimata igas võrgus. RPC juurutamised on olemas kõikides peamistes operatsioonisüsteemides, nagu Unix, Linux, Windows ja OS X. RPC on üldiselt keeleneutraalne, seega piirab see andmetüüpe kõige primitiivsematega, kuna need peavad olema kõigile keeltele ühised. RPC-s ei ole lähenemine objektile suunatud, kuid see on traditsiooniline protseduuriline mehhanism nagu C-s.
Mis on RMI?
RMI, mis tähistab kaugmeetodi kutsumist, on API (Application Programming Interface), mis rakendab RPC-d Java-vormingus, et toetada objektile orienteeritud olemust. See võimaldab Java-meetodeid kutsuda teises Java-virtuaalses masinas, mis asub samas või kaugarvutis. RMI piirang on see, et saab kasutada ainult Java-meetodeid, kuid sellega kaasneb eelis, et objekte saab edastada argumentidena ja tagastada väärtusi. Kui jõudlust peetakse, on RMI Java Virtual masinas baitkoodi kaasamise tõttu aeglasem kui RPC, kuid RMI on programmeerijasõbralik ja seda on väga lihtne kasutada.
RMI kasutab Java sisseehitatud turvamehhanisme ja annab ka soklitehase, mis võimaldab kasutada TCP-väliseid kohandatud transpordikihi protokolle. Pealegi pakub RMI meetodeid tulemüüride ümbersõitmiseks. RMI-s toimuvad toimingud sarnanevad RPC-ga. RMI juurutamine jälgib sisevõrgu üksikasju, kus programmeerija ei pea nende pärast muretsema.
Mis vahe on RPC-l ja RMI-l?
• RPC on keeleneutraalne, samas kui RMI on piiratud Java-ga.
• RPC on protseduuriline nagu C-s, kuid RMI on objektorienteeritud.
• RPC toetab ainult primitiivseid andmetüüpe, samas kui RMI võimaldab objekte edastada argumentidena ja tagastusväärtustena. RPC kasutamisel peab programmeerija jagama kõik liitobjektid primitiivseteks andmetüüpideks.
• RMI-d on seda RPC-d lihtne programmeerida.
• RMI on RPC-st aeglasem, kuna RMI hõlmab java baidekoodi käivitamist.
• RMI lubab kasutada objektorienteeritud olemuse tõttu kujundusmustreid, samas kui RPC-l seda võimalust pole.
Kokkuvõte:
RPC vs RMI
RPC on keeleneutraalne mehhanism, mis võimaldab protseduuri kutsuda kaugarvutis. Keeleneutraalne funktsioon piirab aga argumentidena edastatavaid andmetüüpe ja tagastab väärtused primitiivsetele tüüpidele. RMI on RPC juurutamine Java-s ja see toetab ka objektide edastamist, muutes programmeerija elu lihtsamaks. RMI eeliseks on objektorienteeritud disaini tugi, kuid Java-ga piirdumine on puuduseks.
Pildid viisakalt: