2010-06-12 17 views
60

¿Existe alguna definición clara sobre RPC y el servicio web? Una búsqueda Wikipedia rápido muestra:Cuál es la diferencia entre la llamada a procedimiento remoto y el servicio web

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

servicio Web: Los servicios web son típicamente programación de aplicaciones las interfaces (API) o APIs web que se acceder a través de transferencia de hipertexto Protocolo y ejecutadas en un sistema remoto que aloja los servicios solicitados. Los servicios web tienden a caer en uno de los dos campos: Big Web Services [1] y RESTful Web Services.

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

¿El servicio web es una representación de nivel superior de RPC?

Respuesta

45

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

Sí, lo es. Un servicio web es una implementación específica de RPC. En su nivel más bajo, todo un servicio web es, se conecta a un socket, usando el protocolo HTTP para negociar el envío de una carga útil que se ejecuta en un espacio remoto (incluso puede estar en la misma computadora, para todo lo que sabe el consumidor). Todas esas abstracciones son en su núcleo RPC.

+1

Otros atributos de un servicio web además de lo que escribió Wayne: permite una plataforma independiente de una RPC, es reconocible y autodescriptiva (compárela con una RPC de Win32). – Alex

+4

No, eso no es correcto. RPC es un estilo arquitectónico de un servicio web. Una alternativa sería REST. Referencia: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=5339611 – schlamar

+0

@schlamar ¿El servicio web tiene algo que ver con RPC? En caso afirmativo, ¿tenemos talones de clientes y servidores en el entorno del servicio web? – overexchange

1

• Los datos están formateados para la transferencia mediante XML, lo que mejora o elimina la clasificación, la desasignación y otros requisitos relacionados con la traducción normalmente codificados por un desarrollador. • Los datos se pasan utilizando protocolos estandarizados como HTTP o SMTP, que han publicado estándares bien definidos. • El servicio expuesto subyacente está bien definido utilizando un mecanismo aceptado conocido, WSDL. • Los servicios se encuentran usando un estándar bien definido, UDDI y el ebXML más avanzado.

Específicamente WSDL proporciona una serie de piezas clave de información:

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

4

Remote Procedure Call (RPC) y WebService, en aras de la funcionalidad, ambos van en paralelo. Pero hay una diferencia sutil en su forma de invocar. Un servicio web puede ser invocado por cualquier aplicación, utilizando formato XML sobre protocolo HTTP para procedimientos y su naturaleza interoperable, mientras que en 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 . Admite formato binario sobre 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 de 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 zócalo 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 se encuentra en el local. En el servicio remoto, la función reside en una máquina remota y puede invocarse con el formato y el protocolo adecuados, y permite la escalabilidad.

Cuestiones relacionadas