RPC vs RMI
Osnovna razlika između RPC-a i RMI-ja je u tome što je RPC mehanizam koji omogućuje pozivanje procedure na udaljenom računalu dok je RMI implementacija RPC-a u Javi. RPC je jezično neutralan, ali podržava samo primitivne tipove podataka koji se prosljeđuju. S druge strane, RMI je ograničen na Javu, ali dopušta prosljeđivanje objekata. RPC slijedi tradicionalne konstrukcije proceduralnog jezika dok RMI podržava objektno orijentirani dizajn.
Što je RPC?
RPC, što je kratica za Remote Procedure Call, vrsta je međuprocesne komunikacije. To omogućuje pozivanje funkcije u drugom procesu koji se izvodi na lokalnom ili udaljenom računalu. Ovaj koncept pojavio se davne 1980. godine, ali prva poznata implementacija viđena je u Unixu.
RPC uključuje nekoliko koraka. Klijent poziva proceduru na lokalnom računalu kao i obično. Modul koji se zove klijentski stub prikuplja argumente i stvara poruku i prosljeđuje je operativnom sustavu, operativni sustav poziva sistem i šalje tu poruku udaljenom računalu. Operativni sustav u poslužitelju prikuplja poruku i prosljeđuje je modulu na poslužitelju koji se naziva server stub. Zatim stub poslužitelja poziva proceduru na poslužitelju. Konačno, rezultati se šalju natrag klijentu.
Prednost korištenja RPC-a je ta što je neovisan o detaljima mreže. Programer samo mora specificirati na apstraktan način dok će operativni sustav paziti na detalje interne mreže. To čini programiranje lakšim i omogućuje RPC-u rad na bilo kojoj mreži unatoč fizičkim i protokolarnim razlikama. RPC implementacije prisutne su u svim glavnim operativnim sustavima kao što su Unix, Linux, Windows i OS X. RPC je općenito jezično neutralan stoga ograničava tipove podataka na najprimitivnije jer oni moraju biti zajednički svim jezicima. Pristup u RPC-u nije objektno orijentiran, već je tradicionalni proceduralni mehanizam kao u C.
Što je RMI?
RMI, što je kratica za Remote Method Invocation, je API (Application Programming Interface) koji implementira RPC u Javi za podršku objektno orijentiranoj prirodi. To omogućuje pozivanje Java metoda na drugom Java Virtualnom računalu koje se nalazi na istom računalu ili udaljenom. Ograničenje RMI-ja je da se mogu pozvati samo Java metode, ali to dolazi s prednošću da se objekti mogu proslijediti kao argumenti i povratne vrijednosti. Kada se uzme u obzir izvedba, RMI je sporiji od RPC-a zbog uključenosti bajt koda na Java Virtualnom stroju, ali RMI je vrlo prilagođen programerima i vrlo je jednostavan za korištenje.
RMI koristi ugrađene sigurnosne mehanizme u Javi i također daje tvornicu utičnica koja omogućuje korištenje prilagođenih protokola prijenosnog sloja koji nisu TCP. Štoviše, RMI pruža metode za zaobilaženje vatrozida. Koraci koji se pojavljuju u RMI-ju slični su RPC-u. Implementacija RMI-ja vodi računa o detaljima interne mreže gdje programer ne mora brinuti o njima.
Koja je razlika između RPC i RMI?
• RPC je jezično neutralan dok je RMI ograničen na Javu.
• RPC je proceduralan kao u C-u, ali RMI je objektno orijentiran.
• RPC podržava samo primitivne tipove podataka dok RMI dopušta prosljeđivanje objekata kao argumenata i povratnih vrijednosti. Kada koristi RPC, programer mora podijeliti sve složene objekte na primitivne tipove podataka.
• RMI je jednostavan za programiranje tog RPC-a.
• RMI je sporiji od RPC-a budući da RMI uključuje izvršavanje java bajt koda.
• RMI dopušta korištenje dizajnerskih uzoraka zbog objektno orijentirane prirode dok RPC nema tu mogućnost.
Sažetak:
RPC vs RMI
RPC je jezično neutralan mehanizam koji omogućuje pozivanje procedure na udaljenom računalu. Međutim, jezično neutralna značajka ograničava tipove podataka koji se prosljeđuju kao argumenti i vraćaju vrijednosti na primitivne tipove. RMI je implementacija RPC-a u Javi i također podržava prosljeđivanje objekata, olakšavajući život programera. Prednost RMI-ja je objektno orijentirana podrška za dizajn, ali ograničenje na Javu je nedostatak.