RPC vs RMI
Den grundläggande skillnaden mellan RPC och RMI är att RPC är en mekanism som möjliggör anrop av en procedur på en fjärrdator medan RMI är implementeringen av RPC i java. RPC är språkneutralt men stöder endast primitiva datatyper som ska skickas. Å andra sidan är RMI begränsad till Java men tillåter passerande objekt. RPC följer traditionella procedurella språkkonstruktioner medan RMI stöder objektorienterad design.
Vad är RPC?
RPC, som står för Remote Procedure Call, är en typ av kommunikation mellan processer. 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 uppstod för länge sedan 1980, men den första berömda implementeringen sågs i Unix.
RPC involverar flera steg. Klienten gör en proceduranrop på den lokala datorn som vanligt. Modulen kallad klientstub samlar argumenten och skapar ett meddelande och skickar till operativsystemet, operativsystem gör ett systemanrop och skickar detta meddelande till fjärrdatorn. Operativsystemet på servern samlar in meddelandet och skickas till modulen på servern som kallas serverstub. Sedan anropar serverstub proceduren på servern. Slutligen skickas resultaten tillbaka till klienten.
Fördelen med att använda RPC är att den är oberoende av nätverksdetaljerna. Programmeraren måste bara specificera på ett abstrakt sätt medan operativsystemet kommer att ta hand om de interna nätverksuppgifterna. Så detta gör programmeringen enklare och låter RPC arbeta i alla nätverk trots de fysiska och protokollskillnaderna. RPC-implementeringar finns i alla vanliga operativsystem som Unix, Linux, Windows och OS X. RPC är i allmänhet språkneutralt och begränsar därför 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.
Vad är RMI?
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 anrop av Java-metoder på en annan Java Virtual-maskin som finns på samma dator eller en fjärrkontroll. Begränsningen av RMI är att endast Java-metoder kan åberopas, men detta har fördelen att objekt kan skickas 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 väldigt mycket programmerarvänligt och det är väldigt enkelt att använda.
RMI använder inbyggda säkerhetsmekanismer i Java och ger också en sockelfabrik som möjliggör användning av icke-TCP-anpassade transportlagerprotokoll. Dessutom tillhandahåller RMI metoder för att kringgå brandväggar. Stegen som förekommer i RMI liknar RPC. Implementeringen av RMI tar hand om de interna nätverksuppgifterna där programmeraren inte behöver oroa sig för dem.
Vad är skillnaden mellan RPC och RMI?
• RPC är språkneutralt medan RMI är begränsat till Java.
• RPC är procedurellt som i C, men RMI är objektorienterat.
• RPC stöder endast primitiva datatyper medan RMI tillåter att objekt skickas som argument och returvärden. När du använder RPC måste programmeraren dela upp alla sammansatta objekt till primitiva datatyper.
• RMI är lätt att programmera RPC.
• RMI är långsammare än RPC eftersom RMI innebär körning av Java bytecode.
• RMI tillåter användning av designmönster på grund av den objektorienterade naturen medan RPC inte har den här förmågan.
Sammanfattning:
RPC vs RMI
RPC är en språkneutral mekanism som gör det möjligt att anropa en procedur på en fjärrdator. Den språkneutrala funktionen begränsar dock datatyperna som skickas som argument och returnerar värden till primitiva typer. RMI är implementeringen av RPC i Java och det stöder också objektöverföring, vilket gör det lättare för programmeraren. Fördelen med RMI är det objektorienterade designstödet, men begränsning till Java är en nackdel.
Bilder med tillstånd: