web services - remotos - ¿Cuál es la diferencia entre la llamada a procedimiento remoto y el servicio web?
jax-ws (3)
¿El servicio web es 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, 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.
¿Hay alguna definición clara de RPC y servicio web? Una búsqueda rápida en wikipedia muestra:
RPC: Llamada a procedimiento remoto (RPC) es una tecnología de comunicación entre procesos que permite a un programa informático ejecutar una subrutina o procedimiento 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 mediante el 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 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?
• Los datos están formateados para la transferencia mediante XML, mejorando o eliminando 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 pasan entre dos puntos finales utilizando its y elementos y las definiciones de esquema apropiadas. • La semántica del servicio: cómo se podría 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.
Remote Procedure Call (RPC) y WebService, en aras de la funcionalidad, ambos se ejecutan de forma paralela. Pero hay una diferencia sutil en su forma de invocar. Un servicio web puede ser invocado por cualquier aplicación, usando 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 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 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.