RPC vs RMI
Den grunnleggende forskjellen mellom RPC og RMI er at RPC er en mekanisme som muliggjør anrop av 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 sendes. På den annen side er RMI begrenset til Java, men tillater passerende objekter. RPC følger tradisjonelle prosessuelle språkkonstruksjoner mens RMI støtter objektorientert design.
Hva er RPC?
RPC, som står for Remote Procedure Call, er en type kommunikasjon mellom prosesser. Dette gjør det mulig å ringe en funksjon i en annen prosess som kjører på den lokale datamaskinen eller en ekstern datamaskin. Dette konseptet dukket opp for lenge siden i 1980, men den første berømte implementeringen ble sett i Unix.
RPC involverer flere trinn. Klienten foretar en prosedyreanrop på den lokale datamaskinen som vanlig. Modulen kalt klientstub samler argumentene og lager en melding og overfører til operativsystemet. Operativsystemet ringer og sender denne meldingen til den eksterne datamaskinen. Operativsystemet på serveren samler meldingen og overføres til modulen på serveren som heter serverstub. Deretter kaller serverstubben prosedyren på serveren. Til slutt sendes resultatene tilbake til klienten.
Fordelen med å bruke RPC er at den er uavhengig av nettverksdetaljene. Programmereren må bare spesifisere på en abstrakt måte mens operativsystemet vil ivareta de interne nettverksdetaljene. Så dette gjør programmeringen enklere og lar RPC jobbe i alle nettverk til tross for de fysiske og protokollforskjellene. RPC-implementeringer er til stede i alle vanlige operativsystemer som Unix, Linux, Windows og OS X. RPC er generelt språkneutralt, og det begrenser derfor datatypene 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 prosedyremekanisme som i C.
Hva er RMI?
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 tillater anrop av Java-metoder på en annen Java Virtual-maskin som ligger på samme datamaskin eller en ekstern. Begrensningen med RMI er at bare Java-metoder kan påberopes, men dette kommer med fordelen at objekter kan sendes som argumenter og returverdier. Når ytelse anses som RMI er tregere enn RPC på grunn av involvering av bytecode på Java Virtual-maskinen, men RMI er veldig programmerervennlig, og det er veldig enkelt å bruke.
RMI bruker innebygde sikkerhetsmekanismer i Java og gir også en stikkontaktfabrikk som muliggjør bruk av ikke-TCP tilpassede transportlagsprotokoller. Videre gir RMI metoder for å omgå brannmurer. Trinnene som forekommer i RMI ligner RPC. Implementeringen av RMI ivaretar de interne nettverksdetaljene der programmereren ikke trenger å bekymre seg for dem.
Hva er forskjellen mellom RPC og RMI?
• RPC er språknøytral mens RMI er begrenset til Java.
• RPC er prosessuell som i C, men RMI er objektorientert.
• RPC støtter bare primitive datatyper mens RMI tillater at objekter sendes som argumenter og returverdier. Når du bruker RPC, må programmereren dele alle sammensatte objekter til primitive datatyper.
• RMI er enkelt å programmere RPC.
• RMI er tregere enn RPC siden RMI innebærer utførelse av Java-bytecode.
• RMI tillater bruk av designmønstre på grunn av den objektorienterte naturen mens RPC ikke har denne muligheten.
Sammendrag:
RPC vs RMI
RPC er en språknøytral mekanisme som tillater anrop til en prosedyre på en ekstern datamaskin. Den språkneutrale funksjonen begrenser imidlertid datatypene som sendes som argumenter og returnerer verdier til primitive typer. RMI er implementeringen av RPC i Java og støtter også passering av objekter, noe som gjør livet til programmereren lettere. Fordelen med RMI er den objektorienterte designstøtten, men begrensning til Java er en ulempe.
Bilder med tillatelse: