2010-06-12 19 views
60

Esiste una chiara definizione di RPC e servizio Web? Una ricerca wikipedia rapida mostra:Qual è la differenza tra chiamata a procedura remota e servizio Web

RPC: Remote Procedure Call (RPC) è una tecnologia di comunicazione Inter-processo che consente a un programma per computer per causa una subroutine o di una procedura per eseguire in un altro spazio di indirizzamento (comunemente su un altro computer su una rete condivisa ) senza il programmatore che codifica esplicitamente i dettagli per questa interazione remota .

Web Service: servizi Web sono tipicamente di programmazione delle applicazioni interfacce (API) o API web che sono accede tramite Hypertext Transfer Protocol ed eseguiti su un sistema remoto che ospita i servizi richiesti. I servizi Web tendono a rientrare in uno dei due campi : Big Web Services [1] e RESTful Web Services.

Non sono abbastanza chiaro quale sia la vera differenza tra le due cose. Sembra che una cosa possa appartenere a RPC ed è una specie di servizio web allo stesso tempo.

Il servizio Web è una rappresentazione di livello superiore di RPC?

risposta

45

Il servizio Web è una rappresentazione di livello superiore di RPC?

Sì, lo è. Un servizio Web è un'implementazione specifica di RPC. Al suo livello più basso, tutto è un servizio web, si connette a un socket, usando il protocollo HTTP per negoziare l'invio di un payload che viene eseguito in uno spazio remoto (potrebbe anche essere sullo stesso computer, per quanto ne sa il consumatore). Tutte queste astrazioni sono al suo centro RPC.

+1

Ulteriori attributi di un servizio Web in aggiunta a ciò che ha scritto Wayne: consente una modalità indipendente dalla piattaforma di un RPC, è individuabile e autoreferenziale (confrontarlo con un RPC Win32). – Alex

+4

No, non è corretto. RPC è uno stile architettonico di un servizio Web. Un'alternativa sarebbe REST. Riferimento: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5339611 – schlamar

+0

@schlamar Il servizio Web ha qualcosa a che fare con RPC? In caso affermativo, abbiamo stub client e server in ambiente di servizi Web? – overexchange

1

• I dati vengono formattati per il trasferimento utilizzando XML, migliorando o eliminando il marshalling, lo smantellamento e vari altri requisiti relativi alla traduzione normalmente codificati da uno sviluppatore. • I dati vengono trasmessi utilizzando protocolli standardizzati come HTTP o SMTP, che hanno pubblicato standard ben definiti. • Il servizio esposto sottostante è ben definito utilizzando un meccanismo accettato noto, WSDL. • I servizi vengono trovati utilizzando uno standard ben definito, UDDI e l'ebXML più avanzato.

In particolare WSDL fornisce una serie di informazioni chiave:

• Una definizione del formato dei messaggi che sono passati tra due endpoint utilizzando il suo e gli elementi e le definizioni appropriate dello schema. • La semantica del servizio: come si può chiamare per fare una richiesta/risposta sincrona, solo sincrona di risposta o comunicare in modo asincrono. • Punto finale e trasporto del servizio tramite l'elemento: ovvero, chi fornisce il servizio. • Una codifica tramite l'elemento, ovvero l'accesso al servizio.

4

Remote Procedure Call (RPC) e WebService, per motivi di funzionalità, vanno entrambi in parallelo. Ma c'è una sottile differenza nel loro modo di invocare. Un servizio Web può essere richiamato da qualsiasi applicazione, utilizzando il formato XML su protocollo HTTP per i procedimenti e la sua natura interoperabile, mentre nel caso di RPC la funzione può essere richiamata da più applicazioni in modo da seguire il percorso di serializzazione per archiviare i dati dell'oggetto . Supporta il formato Binary su protocollo TCP. In un approccio migliore possiamo riassumere il flusso di lavoro RPC, come se stessimo eseguendo una funzione tramite il corretto Socket e il corretto formato del messaggio, ma non conosciamo l'effettiva esistenza della particolare funzione nel server client. Anche il socket fornito potrebbe non essere in lo stesso server in cui risiede la funzione. Ma ogni volta dà la sensazione che la funzione si trovi nel locale. In Servizio remoto, la funzione risiede nella macchina remota e può essere richiamata da formato e protocollo appropriati e consente la scalabilità.

Problemi correlati