Remote Procedure Call

(eller: RPC, fjernprocedurekald).

Begrebet anvendes inden for distribueret databehandling om en metode til at kommunikere mellem to dele af et distribueret program. De to dele er ikke nødvendigvis placeret på samme computer, men blot på to computere, som kan kommunikere, typisk via et lokalt net. Metoden anvendes fortrinsvis, hvor de to dele har et client/server-forhold, f.eks. når et hovedprogram skal have adgang til at læse filer på en filserver.

Begrebet er en videreudvikling af de almindeligt kendte kald af procedurer i de programmeringssprog, som er af typen procedurale sprog. Hvor imidlertid det kaldende program og den kaldte procedure begge er dele af det samme program, og derfor udføres på én computer, vil der ved remote procedure calls eventuelt være et datanet skudt ind imellem kaldende program og den kaldte procedure; dette er imidlertid transparent for programmøren.

Der opstår nye problemer i forhold til sædvanlige procedurekald, idet der i datanet eksisterer den mulighed, at en del af de nødvendige komponenter "går ned" under udførelsen af et kald. Hertil kommer, at en procedure normalt udføres i bestemte omgivelser, defineret ved semantikken for procedurekald i det anvendte sprog, og disse skal etableres på passende måde i den computer, som udfører proceduren. Der tænkes her hovedsagelig på overførsel af procedurens parametre og at få resultatet af kaldet retur.

Et fjernprocedurekald vil derfor foregå i flere faser. Ved kaldet vil parametre og identifikation af den kaldende part blive pakket ned i en datablok; dette sker i en programstump, som repræsenterer den kaldte procedure, og som ofte kaldes en stub procedure. Datablokken overføres via nettet til den computer, som udfører proceduren, hvor datablokken pakkes ud, og proceduren kaldes. Når den er færdig, pakkes resultatet ind igen og sendes tilbage til den kaldende, hvor det pakkes ud igen og leveres, som var der tale om et lokalt procedurekald.

Idet det kaldende system, nettet eller det kaldte system kan fejle på et vilkårligt tidspunkt, er det af stor betydning, om dette medfører, at proceduren kaldes højst én gang, netop én gang eller flere gange. Er der tale om læsning i en fil, vil der ikke være problemer i det sidste tilfælde (operationen kaldes idempotent), men er der tale om ajourføring af bankkonti, er den sidste aldeles uacceptabel - her kan tænkes på en Dankort-hævetransaktion.

RPC er velegnet i forbindelse med objektorienterede systemer og indgår bl.a. i CORBA.

Forfattere: 
Klaus Hansen
Casper Thomsen