Remote Procedure Call

De Viquipèdia
Dreceres ràpides: navegació, cerca

Remote procedure call (RPC, de l'anglès Crida a procediment remot) és una tecnologia que permet a un programa d'ordinador fer que una subrutina o procediment s'executi en un altre espai d'adreces (habitualment en un altre ordinador en una xarxa compartida) sense que el programador hagi de programar explícitament els detalls d'aquesta interacció remota. És a dir, el programador escriuria essencialment el mateix codi tant si la subrutina és local al programa executant, o remota. Quan el programari en qüestió és escrit fent servir principis d'orientació a objectes, RPC pot ser anomenat invocació remota o invocació de mètode remota.

Cal notar que hi ha moltes tecnologies diferents que es fan servir habitualment per a aconseguir això que són incompatibles, com ara ONC RPC i DCE/RPC.

Història i orígens[modifica | modifica el codi]

La idea del RPC sorgeix el 1976, quan va ser descrita al RFC 707. Un dels primers usos de negocis de RPC va ser Xerox, sota el nom de "Courier" a 1981. La primera implementació popular de RPC a Unix va ser la de Sun Microsystems (ara anomenada ONC RPC), feta servir com a base per al NFS. ONC RPC encara es fa servir molt avui en diverses plataformes.

Una altra de les primeres implementacions d'Unix va ser el Network Computing System (NCS) de Apollo Computer. NCS va ser utilitzat posteriorment en la fundació de DCE/RPC al DCE de OSF. Una dècada més tard, Microsoft va adoptar DCE/RPC com a base per al seu mecanisme Microsoft RPC (MSRPC), i va implementar DCOM a sobre d'ell. Pel mateix temps (mitjans dels 90), ILU de Xerox PARC i el CORBA de Object Management Group, van oferir un altre paradigma de RPC basat en objectes distribuïts amb mecanisme d'herència.

Enviament de missatges[modifica | modifica el codi]

RPC és un obvi i popular paradigma per a implementar el model client-servidor de computació distribuïda. Un RPC és instanciat pel client enviant un missatge de petició a un servidor remot conegut per a executar el procediment especificat fent servir paràmetres subministrats. Una resposta és retornada al client on l'aplicació continua amb el seu procés. Existeixen moltes variacions i subtileses en diverses implementacions, resultant en una varietat de protocols RPC diferents (incompatibles). Mentre el servidor està processant la crida, el client queda bloquejat.

Una diferència important entre les crides a procediments remots i les crides locals és que les crides remotes poden fracassar a causa de problemes de xarxa imprevisibles. També, els cridadors generalment han de tractar aquests problemes sense saber si el procediment remot va ser realment invocat. Els procediments idempotents (aquells que no tenen efectes addicionals si són cridats més d'una vegada) són fàcilment tractats.

Mecanismes de contacte estàndard[modifica | modifica el codi]

Per a permetre als servidors ser accedits per diferents clients, un nombre de sistemes RPC estandarditzats ha estat creat. La majoria d'aquests fan servir un Interface Description Language (IDL) per a permetre a diverses plataformes cridar al RPC.

Els arxius IDL poden ser utilitzats per a generar codi que faci d'interfície entre el client i el servidor. L'eina més habitualment utilitzada per a això és RPCGEN.

Altres anàlegs a RPC[modifica | modifica el codi]

Anàlegs a RPC trobats a altres llocs:

Referències[modifica | modifica el codi]

Vegeu també[modifica | modifica el codi]