Osnovna razlika između RPC-a i RMI-a je u tome što je RPC mehanizam koji omogućava pozivanje postupka na udaljenom računalu dok je RMI implementacija RPC-a u javi. RPC je neutralan za jezik, ali podržava samo primitivne vrste podataka koje treba prenijeti. S druge strane, RMI je ograničen na Javu, ali dopušta prolazak objekata. RPC slijedi tradicionalne proceduralne jezične konstrukcije dok RMI podržava objektno orijentirani dizajn.
RPC, što je kratica daljinskog postupka poziva, vrsta je međuprocesne komunikacije. To omogućava pozivanje funkcije u drugom procesu koji radi na lokalnom ili udaljenom računalu. Ovaj je koncept nastao davno 1980. godine, ali prva poznata implementacija viđena je u Unixu.
RPC uključuje nekoliko koraka. Klijent obavlja postupak poziva na lokalnom računalu kao i obično. Modul koji se zove klijentski štap skuplja argumente i kreira poruku i prosljeđuje operativnom sustavu, operativni sustav poziva sistem i šalje tu poruku udaljenom računalu. Operativni sustav na poslužitelju skuplja poruku i prelazi u modul na poslužitelju koji se zove stub poslužitelja. Tada uboda poslužitelja poziva postupak na poslužitelju. Konačno, rezultati se vraćaju klijentu.
Prednost upotrebe RPC-a je u tome što je on neovisan o mrežnim pojedinostima. Programer mora samo na apstraktno odrediti dok će se operativni sustav brinuti za detalje o internoj mreži. To olakšava programiranje i omogućuje RPC rad na bilo kojoj mreži unatoč fizičkim i protokolarnim razlikama. Implementacije RPC-a prisutne su u svim glavnim operativnim sustavima kao što su Unix, Linux, Windows i OS X. RPC je općenito jezično neutralan, pa ograničava vrste podataka na one najprimitivnije jer moraju biti zajedničke svim jezicima. Pristup u RPC-u nije objektno orijentiran, ali to je tradicionalni proceduralni mehanizam kao u C.
RMI, što je zaziva udaljenog načina, API je (Application Programming Interface) koji implementira RPC u javi za podršku objektno orijentirane prirode. To omogućava pozivanje Java metoda na drugom Java Virtualnom stroju s istim računalom ili na udaljenom uređaju. Ograničenje RMI-a je što se mogu pozivati samo Java metode, ali to dolazi s tim što predmeti mogu biti preneseni kao argumenti i povratne vrijednosti. Kada se smatra da je performansa RMI sporiji od RPC-a zbog uključivanja bajt koda na Java Virtualnom stroju, ali RMI je vrlo prijateljski programeru i vrlo je jednostavan za upotrebu.
RMI koristi ugrađene sigurnosne mehanizme na Javi i također daje tvornicu utičnica koja omogućuje upotrebu ne-TCP protokola prilagođenog transportnog sloja. Štoviše, RMI pruža metode za zaobilaženje vatrozida. Koraci koji se događaju u RMI-u slični su RPC-u. Provedba RMI-a vodi računa o detaljima unutarnje mreže u kojima programer ne mora brinuti o njima.
• RPC je neutralan za jezik, dok je RMI ograničen na Javu.
• RPC je postupovan kao u C, ali RMI je objektno orijentirana.
• RPC podržava samo primitivne tipove podataka dok RMI omogućuje davanje predmeta kao argumenata i povratnih vrijednosti. Kada koristi RPC, programer mora podijeliti sve složene objekte na primitivne tipove podataka.
• RMI je jednostavno programirati taj RPC.
• RMI je sporiji od RPC-a jer RMI uključuje izvršenje java bytecode-a.
• RMI omogućuje korištenje obrazaca dizajna zbog objektno orijentirane prirode dok RPC nema tu mogućnost.
Sažetak:
RPC je jezični neutralni mehanizam koji omogućava pozivanje postupka na udaljenom računalu. Međutim, jezično neutralna značajka ograničava vrste podataka koji se prosljeđuju kao argumente i vraćaju vrijednosti na primitivne tipove. RMI je implementacija RPC-a u Javi i podržava i prolazak predmeta, što olakšava život programeru. Prednost RMI-a je objektno orijentirana podrška dizajna, ali ograničenje na Java je nedostatak.
Ljubaznošću slika: