Een ander belangrijk verschil tussen de twee is dat de parameters die worden doorgegeven aan het oproepen van externe procedures bestaan uit gewone datastructuren . Aan de andere kant bestaan de parameters die aan de externe methode worden doorgegeven uit objecten .
Vergelijkingstabel
Basis voor vergelijking | RPC | RMI |
---|---|---|
steunen | Procedurale programmering | Object georiënteerd programmeren |
parameters | Gewone datastructuren worden doorgegeven aan procedures op afstand. | Objecten worden doorgegeven aan externe methoden. |
rendement | Lager dan RMI | Meer dan RPC en ondersteund door moderne programmeerbenadering (dwz object-georiënteerde paradigma's) |
Algemene kosten | Meer | Minder relatief |
In-out-parameters zijn verplicht. | Ja | Niet noodzakelijk |
Bepaling van het gemak van programmeren | hoog | laag |
Definitie van RPC
Remote Procedure Call (RPC) is een programmeertaalfunctie die is ontworpen voor de gedistribueerde computerverwerking en die is gebaseerd op de semantiek van lokale procedureaanroepen . Het is de meest voorkomende vorm van service op afstand en is ontworpen als een manier om het procedure-oproepmechanisme te abstraheren om te gebruiken tussen systemen die via een netwerk zijn verbonden. Het is vergelijkbaar met het IPC-mechanisme waarbij het besturingssysteem de processen toestaat om gedeelde gegevens te beheren en om te gaan met een omgeving waarin verschillende processen worden uitgevoerd op afzonderlijke systemen en noodzakelijkerwijs berichtgebaseerde communicatie vereisen.
Laten we begrijpen hoe RPC wordt geïmplementeerd via de gegeven stappen:
- Het clientproces roept de cliëntstomp op met parameters en de uitvoering ervan wordt opgeschort totdat het gesprek is voltooid.
- De parameters worden vervolgens vertaald in een machine-onafhankelijke vorm door het rangschikken van clientstub. Vervolgens wordt het bericht voorbereid dat de weergave van de parameters bevat.
- Om de identiteit van de site te vinden, communiceert de client-stub met de nameserver waarop een externe procedure bestaat.
- Met behulp van het blokkeerprotocol verzendt de clientstrook het bericht naar de site waar de externe procedureaanroep bestaat. Met deze stap stopt u de clientstoot totdat u een antwoord krijgt.
- De serversite ontvangt het bericht dat is verzonden vanaf de clientzijde en converteert het naar een computerspecifiek formaat.
- Nu voert de serverstub samen met de parameters een oproep uit op de serverprocedure en wordt de serverstomp gestopt totdat de procedure is voltooid.
- De serverprocedure retourneert de gegenereerde resultaten naar de serverstomp en de resultaten worden geconverteerd naar een machineonafhankelijk formaat op de serverstomp en maken een bericht met de resultaten.
- Het resultaatbericht wordt verzonden naar de clientstub die opnieuw wordt geconverteerd naar een voor de clientstub geschikt formaat voor de computer.
- Eindelijk retourneert de test de resultaten naar het clientproces.
Definitie van RMI
Remote Method Invocation (RMI) lijkt op RPC, maar is taalspecifiek en een functie van Java. Een thread mag de methode op een object op afstand aanroepen. Om de transparantie aan de client- en serverkant te behouden, implementeert het object op afstand met behulp van stubs en skeletten. Het stub bevindt zich bij de client en voor het externe object gedraagt het zich als een proxy.
Wanneer een client een externe methode aanroept, wordt het startpunt voor de methode op afstand aangeroepen. De clientstub is verantwoordelijk voor het maken en verzenden van het pakket met de naam van een methode en de samengevoegde parameters, en het skelet is verantwoordelijk voor het ontvangen van het pakket.
In Java worden de parameters doorgegeven aan methoden en geretourneerd in de vorm van referentie. Dit kan lastig zijn voor de RMI-service, omdat niet alle objecten mogelijk op afstand zijn. Het moet dus bepalen welke als referentie kan worden doorgegeven en welke niet.
Java gebruikt proces genoemd als serialisatie waarbij de objecten worden doorgegeven als waarde. Het externe object wordt gelokaliseerd door pass-by-value. Het kan ook een object door verwijzing doorgeven door een verwijzing op afstand naar het object door te geven, samen met de URL van de stubklasse. Doorgeven door verwijzing beperkt een beginnetje voor het externe object.
Belangrijkste verschillen tussen RPC en RMI
- RPC ondersteunt procedurele programmeerparadigma's en is dus gebaseerd op C, terwijl RMI objectgeoriënteerde programmeerparadigma's ondersteunt en op Java is gebaseerd.
- De parameters die worden doorgegeven aan externe procedures in RPC zijn de gewone gegevensstructuren. Integendeel, RMI verplaatst objecten als een parameter naar de externe methode.
- RPC kan worden beschouwd als de oudere versie van RMI en wordt gebruikt in de programmeertalen die procedurele programmering ondersteunen en kan alleen de methode voor pass-by-waarde gebruiken. Tegenovergesteld, is de RMI-faciliteit ontworpen op basis van een moderne programmeerbenadering, die gebruik zou kunnen maken van een pass-by-waarde of referentie. Een ander voordeel van RMI is dat de parameters die door verwijzing worden doorgegeven, kunnen worden gewijzigd.
- RPC-protocol genereert meer overheadkosten dan RMI.
- De parameters die in RPC worden doorgegeven, moeten " in-out " zijn. Dit betekent dat de waarde die aan de procedure wordt doorgegeven en de uitvoerwaarde dezelfde gegevenstypen moeten hebben. Daarentegen is er geen dwang van passerende " in-out " parameters in RMI.
- In RPC kunnen referenties niet waarschijnlijk zijn omdat de twee processen de verschillende adresruimte hebben, maar dit is mogelijk in het geval van RMI.
Conclusie
Zowel RPC als RMI dienen hetzelfde doel maar worden in talen gebruikt die verschillende programmeerparadigma's ondersteunen en hebben daarom verschillende functies.