RPC versus RMI
Het fundamentele verschil tussen RPC en RMI is dat RPC een mechanisme is dat het aanroepen van een procedure op een externe computer mogelijk maakt, terwijl RMI de implementatie van RPC in Java is. RPC is taalneutraal, maar ondersteunt alleen primitieve gegevenstypen die moeten worden doorgegeven. Aan de andere kant is RMI beperkt tot Java, maar laat het objecten passeren. RPC volgt traditionele procedurele taalconstructies, terwijl RMI objectgeoriënteerd ontwerp ondersteunt.
Wat is RPC?
RPC, wat staat voor Remote Procedure Call, is een vorm van communicatie tussen processen. Hierdoor kan een functie worden aangeroepen in een ander proces dat op de lokale computer of een externe computer wordt uitgevoerd. Dit concept ontstond lang geleden in 1980, maar de eerste beroemde implementatie werd gezien in Unix.
RPC omvat verschillende stappen. De client voert zoals gebruikelijk een procedure-aanroep uit op de lokale computer. De module genaamd client stub verzamelt de argumenten en maakt een bericht en geeft dit door aan het besturingssysteem. Het besturingssysteem doet een systeemaanroep en stuurt dit bericht naar de externe computer. Het besturingssysteem in de server verzamelt het bericht en geeft het door aan de module op de server die server stub wordt genoemd. Vervolgens roept server stub de procedure op de server aan. Ten slotte worden de resultaten teruggestuurd naar de klant.
Het voordeel van het gebruik van RPC is dat het onafhankelijk is van de netwerkdetails. De programmeur hoeft alleen maar op een abstracte manier te specificeren, terwijl het besturingssysteem voor de interne netwerkdetails zorgt. Dit maakt het programmeren dus eenvoudiger en laat RPC over elk netwerk werken, ondanks de fysieke en protocolverschillen. RPC-implementaties zijn aanwezig in alle reguliere besturingssystemen zoals Unix, Linux, Windows en OS X. RPC is over het algemeen taalneutraal en daarom worden de gegevenstypen beperkt tot de meest primitieve, omdat ze voor alle talen gemeenschappelijk moeten zijn. De benadering in RPC is niet objectgeoriënteerd, maar het is een traditioneel procedureel mechanisme zoals in C.
Wat is RMI?
RMI, wat staat voor Remote Method Invocation, is een API (Application Programming Interface) die RPC in Java implementeert om objectgeoriënteerde aard te ondersteunen. Hierdoor kunnen Java-methoden worden aangeroepen op een andere Java Virtual-machine die zich op dezelfde computer of op een externe computer bevindt. De beperking van RMI is dat alleen Java-methoden kunnen worden aangeroepen, maar dit heeft het voordeel dat objecten als argumenten kunnen worden doorgegeven en waarden kunnen retourneren. Als prestatie wordt beschouwd, is RMI langzamer dan RPC vanwege de betrokkenheid van bytecode op de Java Virtual-machine, maar RMI is zeer programmeervriendelijk en zeer gemakkelijk te gebruiken.
RMI gebruikt ingebouwde beveiligingsmechanismen in Java en geeft ook een socketfactory die het gebruik van niet-TCP aangepaste transportlaagprotocollen mogelijk maakt. Bovendien biedt RMI methoden om firewalls te omzeilen. De stappen die plaatsvinden in RMI zijn vergelijkbaar met RPC. De implementatie van RMI zorgt voor de interne netwerkdetails waar de programmeur zich geen zorgen over hoeft te maken.
Wat is het verschil tussen RPC en RMI?
• RPC is taalneutraal, terwijl RMI beperkt is tot Java.
• RPC is procedureel zoals in C, maar RMI is objectgeoriënteerd.
• RPC ondersteunt alleen primitieve datatypes, terwijl RMI het mogelijk maakt om objecten als argumenten door te geven en waarden terug te geven. Bij gebruik van RPC moet de programmeur alle samengestelde objecten splitsen in primitieve gegevenstypen.
• RMI is gemakkelijk om die RPC te programmeren.
• RMI is langzamer dan RPC, aangezien RMI de uitvoering van java-bytecode omvat.
• RMI staat het gebruik van ontwerppatronen toe vanwege de objectgeoriënteerde aard, terwijl RPC deze mogelijkheid niet heeft.
Samenvatting:
RPC versus RMI
RPC is een taalneutraal mechanisme waarmee een procedure op een externe computer kan worden aangeroepen. De taalneutrale functie beperkt echter de gegevenstypen die als argumenten worden doorgegeven en retourneert waarden naar primitieve typen. RMI is de implementatie van RPC in Java en ondersteunt ook het doorgeven van objecten, waardoor het leven van de programmeur gemakkelijker wordt. Het voordeel van RMI is de objectgeoriënteerde ontwerpondersteuning, maar beperking tot Java is een nadeel.