Verschil tussen RPC en RMI

RPC vs 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 kunnen objecten worden doorgegeven. RPC volgt de traditionele proceduretaalconstructies terwijl RMI objectgeoriënteerd ontwerp ondersteunt.

Wat is RPC?

RPC, dat staat voor Remote Procedure Call, is een soort communicatie tussen processen. Hiermee kunt u een functie in een ander proces aanroepen die op de lokale computer of op een externe computer wordt uitgevoerd. Dit concept ontstond al lang geleden in 1980, maar de eerste beroemde implementatie was te zien in Unix.

RPC omvat verschillende stappen. De client doet een procedure aanroep op de lokale computer zoals gebruikelijk. De module genaamd clientstomp verzamelt de argumenten en maakt een bericht en geeft deze door aan het besturingssysteem. Besturingssysteem voert een systeemaanroep uit en verzendt dit bericht naar de externe computer. Besturingssysteem in de server verzamelt het bericht en gaat naar de module op de server genaamd serverstub. Vervolgens roept de serverstap 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 eenvoudiger en laat RPC ongeacht de fysieke en protocolverschillen over elk netwerk werken. RPC-implementaties zijn aanwezig in alle reguliere besturingssystemen, zoals Unix, Linux, Windows en OS X. RPC is over het algemeen taalneutraal en beperkt daarom de gegevenstypen tot de meest primitieve besturingssystemen, omdat deze gemeenschappelijk moeten zijn voor alle talen. De benadering in RPC is niet objectgericht, maar het is een traditioneel procedureel mechanisme zoals in C.

Wat is RMI?

RMI, dat staat voor Remote Method Invocation, is een API (Application Programming Interface) die RPC in Java implementeert om objectgeoriënteerde aard te ondersteunen. Hiermee kunnen Java-methoden worden aangeroepen op een andere virtuele Java-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 als voordeel dat objecten kunnen worden doorgegeven als argumenten en als retourwaarden. Als de prestaties worden beschouwd, is RMI langzamer dan RPC vanwege de betrokkenheid van bytecode op de Java Virtual Machine, maar RMI is zeer programmeervriendelijk en het is heel gemakkelijk te gebruiken.

RMI maakt gebruik van ingebouwde beveiligingsmechanismen in Java en geeft ook een socketfabriek 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 netwerkgegevens 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 objectgericht.

• RPC ondersteunt alleen primitieve gegevenstypen terwijl RMI toestaat dat objecten worden doorgegeven als argumenten en waarden retourneren. Bij gebruik van RPC moet de programmeur alle samengestelde objecten splitsen naar primitieve gegevenstypen.

• RMI is eenvoudig om die RPC te programmeren.

• RMI is langzamer dan RPC, omdat RMI de uitvoering van java bytecode omvat.

• RMI maakt het gebruik van ontwerppatronen mogelijk vanwege het objectgerichte karakter, terwijl RPC niet over deze mogelijkheid beschikt.

Samenvatting:

RPC vs RMI

RPC is een taalneutraal mechanisme waarmee een procedure op een externe computer kan worden aangeroepen. De taalneutrale functie beperkt echter de gegevenstypes die worden doorgegeven als argumenten en waarden retourneren naar primitieve typen. RMI is de implementatie van RPC in Java en het ondersteunt ook het passeren van objecten, waardoor het leven van de programmeur wordt vergemakkelijkt. Het voordeel van RMI is de objectgerichte ontwerpondersteuning, maar beperking tot Java is een nadeel.

Afbeeldingen beleefdheid:

  1. Synchrone versus asynchrone RPC door CAPS entreprise (CC BY-SA 3.0)