Anbefalt, 2024

Redaksjonens

Forskjellen mellom RPC og RMI

RPC og RMI er mekanismene som gjør det mulig for en klient å påkalle prosedyren eller metoden fra serveren ved å etablere kommunikasjon mellom klient og server. Den vanlige forskjellen mellom RPC og RMI er at RPC bare støtter prosedyreprogrammering mens RMI støtter objektorientert programmering .

En annen stor forskjell mellom de to er at parametrene passert til ekstern prosedyrekall består av vanlige datastrukturer . På den annen side består parametrene som sendes til fjernmetoden, av objekter .

Sammenligningstabel

Grunnlag for sammenligningRPCRMI
støtterProsedyreprogrammering
Objektorientert programmering
parametereVanlige datastrukturer overføres til eksterne prosedyrer.Objekter overføres til eksterne metoder.
EffektivitetLavere enn RMIMer enn RPC og støttet av moderne programmeringsmetode (dvs. Objektorienterte paradigmer)
overheadMer
Mindre forholdsvis
In-out parametere er obligatoriske.JaIkke nødvendigvis
Tilgang til enkel programmering
Høy
lav

Definisjon av RPC

Remote Procedure Call (RPC) er et programmeringsspråkfunksjon utviklet for distribuert databehandling og basert på semantikk av lokale prosesssamtaler. Det er de vanligste former for fjernbetjening og ble utformet som en måte å abstrakte prosedyren anropsmekanismen for å bruke mellom systemer koblet gjennom et nettverk. Det ligner på IPC-mekanismen der operativsystemet tillater at prosessene styrer delte data og håndterer et miljø der ulike prosesser utføres på separate systemer og nødvendigvis krever meldingsbasert kommunikasjon.

La oss forstå hvordan RPC er implementert gjennom de angitte trinnene:

  • Klientprosessen kaller klientstubben med parametere, og utførelsen er suspendert til samtalen er fullført.
  • Parametrene blir da oversatt til maskinuavhengig form ved marshalling gjennom klientstub. Deretter blir meldingen utarbeidet som inneholder representasjonen av parametrene.
  • For å finne identiteten til nettstedet kommuniserer klientens stub med navneserver ved hvilken ekstern prosedyre som eksisterer.
  • Ved hjelp av blokkeringsprotokoll sender klientstuben meldingen til nettstedet der det finnes ekstern prosessanrop. Dette trinnet stopper klientens stub til det blir svar.
  • Servernettstedet mottar meldingen som sendes fra klientsiden og konverterer den til maskinspesifikt format.
  • Nå serverstub utfører en samtale på serverprosedyren sammen med parametrene, og serverstubben avbrytes til prosedyren blir fullført.
  • Serverprosedyren returnerer de genererte resultatene til serverstuben, og resultatene blir konvertert til maskinuavhengig format ved serverstub og oppretter en melding som inneholder resultatene.
  • Resultatmeldingen sendes til klientstubben som konverteres tilbake til maskinspesifikt format som passer for klientstubben.
  • Ved siste klient returnerer stub resultatene til klientprosessen.

Definisjon av RMI

Remote Method Invocation (RMI) ligner RPC, men er språkspesifikk og en funksjon av Java. En tråd er tillatt å kalle metoden på et fjernt objekt. For å opprettholde gjennomsiktigheten på klient- og serversiden implementerer den fjerntliggende objekt ved hjelp av stubber og skjeletter. Stubben ligger hos klienten, og for det fjerne objektet oppfører det seg som en proxy.

Når en klient ringer en ekstern metode, kalles stubben for den eksterne metoden. Klientstubben er ansvarlig for å opprette og sende pakken som inneholder navnet på en metode og de marshallede parametrene, og skjelettet er ansvarlig for mottak av pakken.

Skjelettet unmarshals parametrene og påkaller ønsket metode på serveren. Skjelettet marscherer den oppgitte verdien (eller unntak) med pakken og sender den til klientstubben. Stuben reassembler returpakken og sender den til klienten.

I Java sendes parametrene til metoder og returneres i form av referanse. Dette kan være plagsomt for RMI-tjenesten siden ikke alle objekter er muligens eksterne metoder. Så må det avgjøre hvilken som kunne overføres som referanse og som ikke kunne.

Java bruker prosess kalt serialisering der objektene er bestått som verdi. Det fjerne objektet er lokalisert med pass-by-verdi. Det kan også sende et objekt ved referanse gjennom å sende en fjernreferanse til objektet sammen med URL-adressen til stubklassen. Pass ved referanse begrenser en stub for det fjerne objektet.

Viktige forskjeller mellom RPC og RMI

  1. RPC støtter prosedyreprogrammeringsparadigmer, slik at C er basert, mens RMI støtter objektorienterte programmeringsparadigmer og er Java-basert.
  2. Parametrene som sendes til eksterne prosedyrer i RPC er de vanlige datastrukturene. Tvert imot overfører RMI objekter som en parameter til fjernmetoden.
  3. RPC kan betraktes som den eldre versjonen av RMI, og den brukes i programmeringsspråket som støtter prosedyreprogrammering, og den kan bare bruke pass-by-verdi-metoden. Imidlertid er RMI-anlegget utformet basert på moderne programmeringsmetode, som kan bruke passere etter verdi eller referanse. En annen fordel med RMI er at parametrene som passeres ved referanse, kan endres.
  4. RPC-protokollen genererer mer kostnader enn RMI.
  5. Parametrene som passeres i RPC må være " in-out ", noe som betyr at verdien som sendes til prosedyren og utdaterværdien må ha de samme datatyper. Derimot er det ingen tvang om å sende " in-out " parametere i RMI.
  6. I RPC kan referanser ikke være sannsynlige fordi de to prosessene har den forskjellige adresserommet, men det er mulig i tilfelle RMI.

Konklusjon

Både RPC og RMI tjener samme formål, men brukes på språk, støtter forskjellige programmeringsparadigmer, og har derfor forskjellige egenskaper.

Top