Den grundläggande skillnaden mellan RPC och RMI är att RPC är en mekanism som möjliggör uppringning av ett förfarande på en fjärrdator medan RMI är implementeringen av RPC i java. RPC är språkneutral men stöder endast primitiva datatyper som ska överföras. Å andra sidan är RMI begränsad till Java men tillåter passande objekt. RPC följer traditionella processuella språkkonstruktioner medan RMI stöder objektorienterad design.
RPC, som står för Remote Procedure Call, är en typ av inter-process kommunikation. Detta gör det möjligt att ringa en funktion i en annan process som körs på den lokala datorn eller en fjärrdator. Detta koncept utvecklades länge sedan 1980, men den första kända implementeringen sågs i Unix.
RPC innefattar flera steg. Klienten ringer en procedur på den lokala datorn som vanligt. Modulen kallad klientstub samlar argumenten och skapar ett meddelande och skickar till operativsystemet. Operativsystemet gör ett systemsamtal och skickar det här meddelandet till fjärrdatorn. Operativsystemet i servern samlar meddelandet och skickas till modulen på serverns serverstub. Då kallar serverstubben proceduren på servern. Slutligen skickas resultaten tillbaka till kunden.
Fördelen med att använda RPC är att den är oberoende av nätverksinformationen. Programmeraren måste bara ange på ett abstrakt sätt medan operativsystemet kommer att se efter de interna nätverksuppgifterna. Så det gör programmeringen enklare och låter RPC fungera över alla nät trots de fysiska och protokollskillnaderna. RPC-implementeringar finns i alla vanliga operativsystem som Unix, Linux, Windows och OS X. RPC är generellt språkneutral, vilket begränsar datatyperna till de mest primitiva eftersom de måste vara gemensamma för alla språk. Tillvägagångssättet i RPC är inte objektorienterat, men det är en traditionell procedurmekanism som i C.
RMI, som står för Remote Method Invocation, är ett API (Application Programming Interface) som implementerar RPC i Java för att stödja objektorienterad natur. Detta möjliggör uppringning av Java-metoder på en annan Java Virtual-maskin som är bosatt på samma dator eller en fjärrkontroll. Begränsningen av RMI är att endast Java-metoder kan åberopas, men detta kommer med fördelen att objekt kan överföras som argument och returvärden. När prestanda anses vara RMI långsammare än RPC på grund av inblandning av bytecode på Java Virtual-maskinen, men RMI är mycket programmerarevänlig och det är mycket lätt att använda.
RMI använder inbyggda säkerhetsmekanismer i Java och ger också en socketfabrik som möjliggör användning av protokoll för icke-TCP-anpassade transportlager. Dessutom tillhandahåller RMI metoder för att kringgå brandväggar. Stegen som förekommer i RMI liknar RPC. Genomförandet av RMI ser efter de interna nätverksdetaljerna där programmeraren inte behöver oroa sig för dem.
• RPC är språkneutral medan RMI är begränsad till Java.
• RPC är procedur som i C, men RMI är objektorienterad.
• RPC stöder endast primitiva datatyper medan RMI tillåter objekt att överföras som argument och returvärden. När du använder RPC måste programmeraren dela upp några förhöjda objekt till primitiva datatyper.
• RMI är lätt att programmera den RPC.
• RMI är långsammare än RPC eftersom RMI innebär genomförande av java bytecode.
• RMI tillåter användning av designmönster på grund av objektorienterad natur, medan RPC inte har denna förmåga.
Sammanfattning:
RPC är en språkneutral mekanism som tillåter uppringning av ett förfarande på en fjärrdator. Den språkneutrala funktionen begränsar emellertid de datatyper som överförs som argument och returvärden till primitiva typer. RMI är implementeringen av RPC i Java och det stöder också objektöverföring, vilket gör programmerarens liv enklare. Fördelen med RMI är objektorienterad designstöd, men begränsning till Java är en nackdel.
Bilder Hälsovård: