Verschil tussen RPC en RMI

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 11 Kunnen 2024
Anonim
What is RPC?
Video: What is RPC?

Inhoud


RPC en RMI zijn de mechanismen waarmee een client de procedure of methode van de server kan oproepen door communicatie tussen client en server tot stand te brengen. Het gemeenschappelijke verschil tussen RPC en RMI is dat RPC alleen ondersteunt procedurele programmering terwijl RMI ondersteunt object georiënteerd programmeren.

Een ander groot verschil tussen de twee is dat de parameters die worden doorgegeven aan procedures op afstand bestaan ​​uit gewone datastructuren. Aan de andere kant bestaan ​​de parameters die worden doorgegeven aan de externe methode voorwerpen.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingRPCRMI
steunenProcedurele programmering
Object georiënteerd programmeren
parametersGewone gegevensstructuren worden doorgegeven aan procedures op afstand.Objecten worden doorgegeven aan externe methoden.
rendementLager dan RMIMeer dan RPC en ondersteund door moderne programmeerbenadering (d.w.z. objectgeoriënteerde paradigma's)
Algemene kostenMeer
Minder relatief
In-uit parameters zijn verplicht.JaNiet noodzakelijk
Verstrekking van programmeergemak
hoog
laag


Definitie van RPC

Remote Procedure Call (RPC) is een programmeertaalfunctie die is ontwikkeld voor gedistribueerd computergebruik en is gebaseerd op semantiek van lokale procedure noemt. Het is de meest voorkomende vorm van service op afstand en is ontworpen als een manier om het procedureaanroepmechanisme samen te vatten dat wordt gebruikt tussen systemen die via een netwerk zijn verbonden. Het is vergelijkbaar met het IPC-mechanisme waarbij het besturingssysteem de processen toestaat gedeelde gegevens te beheren en om te gaan met een omgeving waarin verschillende processen op afzonderlijke systemen worden uitgevoerd en noodzakelijkerwijs op communicatie gebaseerde processen vereisen.

Laten we begrijpen hoe RPC via de gegeven stappen wordt geïmplementeerd:

  • Het clientproces roept de clientstub met parameters aan en de uitvoering wordt opgeschort totdat het gesprek is voltooid.
  • De parameters worden vervolgens vertaald in machine-onafhankelijke vorm door marsstalling via clientstub. Vervolgens wordt de voorbereid die de weergave van de parameters bevat.
  • Om de identiteit van de site te vinden, communiceert de clientstub met de naamserver waarop de externe procedure bestaat.
  • Met behulp van het blokprotocol stuurt de client de site waar de externe procedureoproep bestaat. Met deze stap stopt u de clientstomp totdat deze een antwoord krijgt.


  • De server-site ontvangt de verzonden van de client-zijde en converteert het in machine-specifieke indeling.
  • Nu voert serverstub een aanroep uit op de serverprocedure samen met de parameters, en de serverstub wordt stopgezet totdat de procedure is voltooid.
  • De serverprocedure retourneert de gegenereerde resultaten naar de serverstub en de resultaten worden geconverteerd naar een machine-onafhankelijk formaat bij serverstub en maken een met de resultaten.
  • Het resultaat wordt verzonden naar de clientstub die weer wordt omgezet in een machinespecifiek formaat dat geschikt is voor de clientstub.
  • Bij de laatste client retourneert stub de resultaten naar het clientproces.

Definitie van RMI

Remote Method Invocation (RMI) is vergelijkbaar met RPC maar is taalspecifiek en een kenmerk van Java. Een thread mag de methode op een extern object aanroepen. Om de transparantie aan de client- en serverzijde te behouden, implementeert het object op afstand met behulp van stubs en skeletten. De stub bevindt zich bij de client en gedraagt ​​zich voor het externe object als een proxy.

Wanneer een client een externe methode aanroept, wordt de stub voor de externe methode aangeroepen. De client-stub is verantwoordelijk voor het maken en invoeren van het pakket met de naam van een methode en de samengestelde parameters, en het skelet is verantwoordelijk voor het ontvangen van het pakket.

Het skelet ontkoppelt parameters en roept de gewenste methode op de server aan. Het skelet rangschikt de gegeven waarde (of uitzonderingen) met het pakket en stuurt het naar de clientstomp. De stub assembleert het retourpakket en stuurt het naar de klant.

In Java worden de parameters doorgegeven aan methoden en geretourneerd in de vorm van een verwijzing. Dit kan lastig zijn voor de RMI-service omdat niet alle objecten mogelijk externe methoden zijn. Het moet dus bepalen welke als referentie kan worden doorgegeven en welke niet.

Java gebruikt een proces genaamd serialisatie waar de objecten als waarde worden doorgegeven. Het externe object is gelokaliseerd op pass-by-waarde. Het kan ook een object doorgeven via een externe verwijzing naar het object, samen met de URL van de stub-klasse. Pass by reference beperkt een stub voor het externe object.

  1. RPC ondersteunt procedurele programmeerparadigma's is dus gebaseerd op C, terwijl RMI objectgeoriënteerde programmeerparadigma's ondersteunt en op Java is gebaseerd.
  2. De parameters die worden doorgegeven aan externe procedures in RPC zijn de gewone gegevensstructuren. Integendeel, RMI verzendt objecten als parameter naar de externe methode.
  3. RPC kan worden beschouwd als de oudere versie van RMI, en het wordt gebruikt in de programmeertalen die procedureel programmeren ondersteunen, en het kan alleen de methode pass by value gebruiken. Tegenover, is de RMI-faciliteit bedacht op basis van een moderne programmeerbenadering, die gebruik kan maken van waarde of referentie. Een ander voordeel van RMI is dat de doorgegeven parameters kunnen worden gewijzigd.
  4. RPC-protocol genereert meer overhead dan RMI.
  5. De parameters die in RPC worden doorgegeven, moeten 'in uit'Wat betekent dat de waarde die aan de procedure wordt doorgegeven en de uitvoerwaarde dezelfde gegevenstypen moeten hebben. Daarentegen is er geen verplichting om te slagen 'in uit”Parameters in RMI.
  6. In RPC konden verwijzingen niet waarschijnlijk zijn omdat de twee processen een afzonderlijke adresruimte hebben, maar het is mogelijk in het geval van RMI.

Gevolgtrekking

Zowel RPC als RMI dienen hetzelfde doel, maar worden in talen gebruikt en ondersteunen verschillende programmeerparadigma's en hebben daarom verschillende functies.