¿Cuál es la diferencia entre la llamada a procedimiento remoto y el servicio web?

80

¿Existe una definición clara de RPC y Web Service? Una búsqueda rápida en Wikipedia muestra:

RPC: La llamada a procedimiento remoto (RPC) es una tecnología de comunicación entre procesos que permite que un programa de computadora haga que una subrutina o procedimiento se ejecute en otro espacio de direcciones (comúnmente en otra computadora en una red compartida) sin que el programador codifique explícitamente los detalles para esta interacción remota.

Servicio web: los servicios web suelen ser interfaces de programación de aplicaciones (API) o API web a las que se accede a través del Protocolo de transferencia de hipertexto y se ejecutan en un sistema remoto que aloja los servicios solicitados. Los servicios web tienden a caer en uno de dos campos: Big Web Services [1] y RESTful Web Services.

No tengo muy claro cuál es la diferencia real entre las dos cosas. Parece que una cosa podría pertenecer a RPC y es una especie de servicio web al mismo tiempo.

¿Es el servicio web una representación de nivel superior de RPC?

xiao 啸
fuente

Respuestas:

60

¿Es el servicio web una representación de nivel superior de RPC?

Sí lo es. Un servicio web es una implementación específica de RPC. En su nivel más bajo, Web Service se conecta al Socket, utilizando el protocolo HTTP, para negociar el envío de una carga útil que se ejecuta en un espacio remoto (el espacio remoto puede ser la misma computadora). Todas estas abstracciones de llamadas remotas, en esencia, son RPC.

Wayne Hartman
fuente
1
Otros atributos de un servicio web además de lo que escribió Wayne: permite una forma independiente de plataforma de un RPC, es detectable y autodescriptivo (compárelo con un RPC de Win32).
Alex
6
No, eso no es correcto. RPC es un estilo arquitectónico de un servicio web. Una alternativa sería DESCANSO. Referencia: ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5339611
schlamar
@schlamar ¿El servicio web tiene algo que ver con RPC? Si es así, ¿tenemos stubs de cliente y servidor en el entorno del servicio web?
sobreintercambio
9

Veo esta pregunta. La pregunta se hizo hace mucho tiempo, pero creo que la respuesta de cualquier persona en esta comunidad, que brinde más información y claridad sobre este tema, será útil para los futuros interrogadores. Entonces, me gustaría agregar mi mejora señalando las diferencias clave y espero que sea útil para los lectores futuros.

------------------------------------------------------------------------------
| Category             |    RPC              |    Web Services
------------------------------------------------------------------------------
|Operation's Location  | On top of TCP       | on top of HTTP Protocol
------------------------------------------------------------------------------
|Data format           | Binary              | Text, XML, JSON, ect.
------------------------------------------------------------------------------
|Speed                 | Slow (Marshalling)  | Fast
------------------------------------------------------------------------------

No he mencionado descripciones de RPC y servicios web, porque las ve claramente en la respuesta de otros.

Dosto
fuente
4

Llamada a procedimiento remoto (RPC) y WebService, en aras de la funcionalidad, ambos van en paralelo. Pero hay una sutil diferencia en su forma de invocar. Un Web Service puede ser invocado por cualquier aplicación, utilizando formato XML sobre protocolo HTTP para procedimientos y su naturaleza interoperable, mientras que en el caso de RPC la función puede ser invocada por múltiples aplicaciones para que siga la ruta de Serialización para almacenar los datos del objeto. Es compatible con el formato binario sobre el protocolo TCP. En un mejor enfoque, podemos resumir el flujo de trabajo de RPC, como si estuviéramos ejecutando una función a través del socket adecuado y el formato de mensaje adecuado, pero no conocemos la existencia real de la función en particular en el servidor del cliente. Incluso el socket proporcionado podría no estar en el mismo servidor en el que reside la función. Pero cada vez da la sensación de que la función está ubicada en el local.

fak33r
fuente
por favor mejore el inglés. No puedo entender
Mohit Shah
1

• Los datos se formatean para su transferencia utilizando XML, mejorando o eliminando la clasificación, la descomposición y otros requisitos relacionados con la traducción que normalmente codifica un desarrollador. • Los datos se transmiten utilizando protocolos estandarizados como HTTP o SMTP, que han publicado estándares bien definidos. • El servicio expuesto subyacente está bien definido mediante un mecanismo aceptado conocido, WSDL. • Los servicios se encuentran utilizando un estándar bien definido, UDDI y el ebXML más avanzado.

Específicamente, WSDL proporciona una serie de datos clave:

• Una definición del formato de los mensajes que se pasan entre dos puntos finales utilizando sus elementos y y las definiciones de esquema adecuadas. • La semántica del servicio: cómo se puede llamar para realizar una solicitud / respuesta síncrona, una sola respuesta síncrona o una comunicación asincrónica. • El punto final y transporte del servicio a través del elemento: es decir, quién presta el servicio. • Una codificación a través del elemento, así se accede al servicio.

sravan kumar
fuente