Remote procedure call (ibland remote procedure call ; RPC från engelska remote procedure call ) är en klass av teknologier som tillåter program att anropa funktioner eller procedurer i ett annat adressutrymme (på fjärrnoder eller i ett oberoende tredjepartssystem på samma nod). Vanligtvis inkluderar en implementering av RPC-teknik två komponenter: ett nätverksprotokoll för klient-serverkommunikation och ett objektserialiseringsspråk (eller strukturer för icke-objektiva RPC). Olika implementeringar har olika arkitekturer och skiljer sig i kapacitet: vissa implementerar SOA- arkitekturen , andra implementerar CORBA eller DCOM . På transportlagret använder RPC:er huvudsakligen TCP- och UDP-protokollen , men vissa är byggda ovanpå HTTP (vilket bryter mot ISO/OSI- arkitekturen , eftersom HTTP inte ursprungligen är ett transportprotokoll).
Det finns många tekniker som tillhandahåller RPC, bland dem:
Tanken med att anropa fjärrprocedurer är att utöka mekanismen för överföring av kontroll och data inom ett program som körs på samma nod till att överföra kontroll och data över nätverket. Verktyg för fjärranrop är utformade för att underlätta organisationen av distribuerad datoranvändning och skapandet av distribuerade klient-serverinformationssystem. Den mest effektiva användningen av RPC uppnås i de applikationer där det finns en interaktiv kommunikation mellan fjärrkomponenter med en liten svarstid och en relativt liten mängd överförd data. Sådana applikationer kallas RPC-orienterade.
De framträdande egenskaperna hos ett fjärranrop är:
Implementeringen av fjärrsamtal är mycket mer komplicerad än implementeringen av lokala procedursamtal.
Eftersom anrops- och anropsprocedurerna körs på olika noder har de olika adressutrymmen, och detta skapar problem när man skickar parametrar och resultat, speciellt om maskinerna kör olika operativsystem eller har olika arkitekturer (till exempel little endian eller little endian är används ). ). Eftersom RPC inte kan förlita sig på delat minne, betyder det att RPC-parametrar inte får innehålla pekare till icke-stackminnesplatser och att parametervärden måste kopieras från en dator till en annan. För att kopiera parametrarna för proceduren och resultatet av exekvering via nätverket serialiseras de .
Till skillnad från ett lokalt samtal använder ett fjärranrop nödvändigtvis nätverksarkitekturens transportlager (till exempel TCP ), men detta förblir dolt för utvecklaren. Dessutom deltar minst två processer i implementeringen av RPC - en på varje nod, och om en av dem kraschar kan följande situationer uppstå: om anropsproceduren kraschar kommer de fjärranropade procedurerna att bli föräldralösa och om fjärrprocedurer kommer att bli "utblottade föräldrar" till anropsprocedurer, som kommer att vänta på svar från fjärrkontroller utan resultat.
Det finns också ett antal problem förknippade med heterogeniteten hos programmeringsspråk och operativa miljöer: datastrukturer och proceduranropsstrukturer som stöds i ett programmeringsspråk stöds inte på samma sätt i alla andra språk. Det finns alltså ett kompatibilitetsproblem som ännu inte har lösts vare sig genom införandet av en allmänt accepterad standard, eller genom implementeringen av flera konkurrerande standarder på alla arkitekturer och på alla språk.
Centralt för RPC-implementeringar är transportdelsystemet, som ansvarar för att hantera utgående och inkommande anslutningar. Dess funktioner inkluderar stöd för konceptet "meddelandegräns" för transportprotokoll som inte direkt stöder det (TCP) och stöd för garanterad leverans för transportprotokoll som inte stöder det (UDP).
Trådpoolningskomponent (endast Callee) - Ger en exekveringskontext för kod som anropas över nätverket.
Rangeringskomponenten (analogt med " serialisering " ) säkerställer att anropsparametrar packas i en byteström på ett standardsätt som är oberoende av arkitekturen (särskilt ordningen på bytes i ett ord). I synnerhet kan det påverka arrayer, strängar och strukturer som pekas på av pekparametrar.
En separat komponent kan vara ansvarig för att kryptera paket och signera dem digitalt .
Ett separat block av funktioner är autentisering och auktorisering, som säkerställer överföring av information över nätverket som identifierar personen som ringer.
I vissa implementeringar av RPC (.NET Remoting) är delsystemsgränser öppna polymorfa gränssnitt, och det är möjligt att skriva en egen implementering av nästan alla listade delsystem. I andra implementeringar (DCE RPC på Windows) är detta inte fallet.
TCP / IP-protokoll efter lager av OSI-modellen | Grundläggande|
---|---|
Fysisk | |
kanaliserad | |
nätverk | |
Transport | |
session | |
Representation | |
Applicerad | |
Annat ansökt | |
Lista över TCP- och UDP-portar |