Apel procedură la distanță

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică , termenul apel procedură la distanță ( RPC sau R emote P rocedure C all) se referă la activarea de către un program a unei proceduri sau subrutine activate pe un alt computer decât cel pe care rulează programul. Astfel, RPC permite unui program să execute subrutine „de la distanță” pe computere la distanță, accesibile printr-o rețea . Esențială pentru conceptul de RPC este ideea de transparență : apelul de procedură la distanță trebuie de fapt executat într-un mod cât mai similar cu cel al apelului de procedură locală; detaliile comunicării în rețea trebuie să fie „ascunse” (făcute transparente ) utilizatorului mecanismului.

Acceptări ale termenului

În funcție de context, expresia RPC este utilizată în semnificații ușor diferite:

  • poate indica paradigma comunicării generale între procesele descrise mai sus, de exemplu spre deosebire de alte modele de comunicare, cum ar fi schimbul de mesaje;
  • poate indica un API (în sens general sau un API specific) care permite în acest fel interacțiunea dintre procese; de exemplu, o anumită bibliotecă care o implementează pe o anumită platformă;
  • poate indica protocolul de rețea utilizat pentru implementarea acestui mecanism de interacțiune.

Paradigma RPC

Paradigma RPC este potrivită în special pentru calcule distribuite bazate pe modelul client-server ; „apelul de procedură” corespunde „cererii” trimise de „client”, iar „ valoarea returnată ” a procedurii corespunde „răspunsului” trimis de „server”.

Localizare server

Deoarece procedura este efectuată pe un terminal diferit de cel de la care este invocat, apare necesitatea de a localiza serverul care va efectua procedura solicitată. Există trei moduri distincte:

  • Metoda statică. Adresa serverului ( adresa IP ) este conectată (scrisă) la client .
  • Metoda dinamică. Clientul stub în timp ce împachetează datele, trimite o transmisie solicitând adresa unui server care poate efectua RPC-ul dorit. Mașinile care primesc acest mesaj difuzat și implementează procedura vor răspunde clientului.
  • Server de nume. Clientul consultă o entitate, numită server de nume , care oferă o listă de servere și serviciile pe care le oferă fiecare.

Aspecte semantice

Deși scopul final al paradigmei RPC este de a furniza un mecanism de apel la procedură la distanță a cărui semantică este în esență echivalentă cu cea a apelului de procedură locală (de aici transparența menționată mai sus a mecanismului), această echivalență nu este niciodată pe deplin realizată., Din cauza dificultăților care poate apărea în comunicarea în rețea (întotdeauna supusă eșecului). Deoarece în mod evident nu există un singur mod „corect” de a gestiona aceste complicații, mecanismele RPC pot diferi subtil în semantica exactă a apelului la distanță.

Unele mecanisme, de exemplu, au semantică „cel mult o dată” : cu alte cuvinte, un apel de procedură la distanță poate eșua (adică nu se poate executa), dar este garantat că nu va duce la activări multiple ale subrutinei numite. Abordarea opusă este reprezentată de semantica „cel puțin o dată” , care garantează că subrutina este apelată cel puțin o dată (prin urmare, s-ar putea întâmpla să fie activată de mai multe ori ). Semantica ideală este „exact o dată” , ceea ce coincide cu semantica tradițională a apelului de procedură. În cazul procedurilor idempotente (adică pentru care o activare simplă și activări multiple sunt funcțional echivalente), semantica „cel puțin o dată” coincide cu cea „exact o dată”.

Alte diferențe semantice între RPC și apelul procedurii tradiționale se referă la imposibilitatea evidentă pentru procedura apelată de a produce efecte secundare în mediul apelantului. Chiar și unele forme de trecere a parametrilor , cum ar fi trecerea parametrilor după adresă , nu se aplică direct RPC, dar pot fi înlocuite cu concepte semantic foarte apropiate (cum ar fi distincția dintre parametrii de intrare și parametrii de ieșire ).

Interoperabilitate și independență lingvistică

Același protocol RPC poate fi accesibil prin numeroase API-uri pentru diferite limbaje de programare . Aceasta permite unui program să apeleze „subrutine” de programe la distanță potențial scrise în alte limbaje de programare. În majoritatea cazurilor, sistemele RPC de acest fel folosesc un limbaj de descriere a interfeței care permite o reprezentare formală uniformă a mecanismelor „subrutină” („procedură”, „funcție”, „subrutină” etc.) oferite de diferite limbi. Exemple de platforme care permit interoperabilitatea programelor scrise în diferite limbi sunt Sun RPC (cunoscut și sub numele de ONC RPC ), mediul de calcul distribuit sau DCE, tehnologiile DCOM și ActiveX ale Microsoft și middleware CORBA .

Evoluțiile moderne ale RPC

Multe mecanisme moderne RPC stau la baza, mai mult sau mai puțin explicit, ideea că programele care interacționează sunt orientate pe obiecte . În acest caz vorbim și, mai corect, despre „invocarea la distanță a metodelor”. Remotingul de execuție a metodei este acum acceptat de limbaje majore de dezvoltare la nivel înalt precum Microsoft .NET și Java , puse la dispoziție respectiv de tehnologii precum .NET TCP Remoting (2.0), .NET WCF (3.X) și RMI (Remote) Invocare metodă).

Recent, mulți producători au creat tehnologie clasică SmPC similară utilizând XML ca IDL (I nterface D escription L anguage) și HTTP ca protocol de rețea. Aceste sisteme se numesc servicii web . Un exemplu celebru este SOAP (Simple Object Access Protocol).

Elemente conexe

Telematică Portal telematic : accesați intrări Wikipedia care vorbesc despre rețele, telecomunicații și protocoale de rețea