Den grunnleggende forskjellen mellom RPC og RMI er at RPC er en mekanisme som gjør det mulig å ringe en prosedyre på en ekstern datamaskin mens RMI er implementeringen av RPC i java. RPC er språknøytral, men støtter bare primitive datatyper som skal bestås. På den annen side er RMI begrenset til Java, men tillater passerende objekter. RPC følger tradisjonelle prosedyriske språkkonstruksjoner mens RMI støtter objektorientert design.
RPC, som står for Remote Procedure Call, er en type inter-prosesskommunikasjon. Dette tillater å ringe en funksjon i en annen prosess som kjører på den lokale datamaskinen eller en ekstern datamaskin. Dette konseptet oppsto for lenge siden i 1980, men den første kjente implementeringen ble sett i Unix.
RPC innebærer flere trinn. Klienten kaller en prosedyre på den lokale datamaskinen som vanlig. Modulen kalt klientstub samle argumenter og opprette en melding og sende til operativsystemet. Operativsystemet gjør et systemanrop og sender denne meldingen til den eksterne datamaskinen. Operativsystemet i serveren samler meldingen og overgår til modulen på serveren kalles serverstub. Da kaller serverstub prosedyren på serveren. Endelig sendes resultatene tilbake til klienten.
Fordelen ved å bruke RPC er at den er uavhengig av nettverksdetaljene. Programmereren må bare angi abstrakt mote mens operativsystemet vil se etter de interne nettverksdetaljene. Så dette gjør programmeringen enklere, og lar RPC jobbe på tvers av alle nettverk, til tross for fysiske og protokollforskjeller. RPC-implementeringer er tilstede i alle vanlige operativsystemer som Unix, Linux, Windows og OS X. RPC er generelt språknøytral, og det begrenser datatyper til de mest primitive, siden de må være felles for alle språk. Tilnærmingen i RPC er ikke objektorientert, men det er en tradisjonell prosessormekanisme som i C.
RMI, som står for Remote Method Invocation, er et API (Application Programming Interface) som implementerer RPC i Java for å støtte objektorientert natur. Dette gjør det mulig å ringe Java-metoder på en annen Java Virtual-maskin som ligger på samme datamaskin eller en fjernkontroll. Begrensningen av RMI er at bare Java-metoder kan påberopes, men dette kommer med fordelen at objekter kan overføres som argumenter og returverdier. Når ytelse vurderes er RMI langsommere enn RPC på grunn av involvering av bytecode på Java Virtual-maskinen, men RMI er veldig programmerer vennlig, og det er veldig enkelt å bruke.
RMI bruker innebygde sikkerhetsmekanismer i Java og gir også en sokkelfabrikk som muliggjør bruk av ikke-TCP tilpassede transportlag protokoller. Videre gir RMI metoder for å omgå firewalls. Trinnene som oppstår i RMI, ligner RPC. Implementeringen av RMI ser etter de interne nettverksdetaljene der programmereren ikke trenger å bekymre seg for dem.
• RPC er språk nøytralt mens RMI er begrenset til Java.
• RPC er prosessorisk som i C, men RMI er objektorientert.
• RPC støtter kun primitive datatyper mens RMI tillater objekter som skal overføres som argumenter og returverdier. Når du bruker RPC, må programmereren dele eventuelle sammensatte objekter til primitive datatyper.
• RMI er enkelt å programmere den RPC.
• RMI er tregere enn RPC siden RMI innebærer utførelse av java bytecode.
• RMI tillater bruk av designmønstre på grunn av objektorientert natur, mens RPC ikke har denne funksjonen.
Sammendrag:
RPC er en språknøytral mekanisme som tillater oppringning av en prosedyre på en ekstern datamaskin. Språket nøytral funksjonen begrenser imidlertid datatyper som sendes som argumenter og returnerer verdier til primitive typer. RMI er implementeringen av RPC i Java, og den støtter også objektoverføring, noe som gjør livet til programmereren lettere. Fordelen med RMI er objektorientert designstøtte, men begrensning for Java er en ulempe.
Bilder Hilsen: