¿Cuál es la diferencia entre REST y RPC?

Tanto RPC como REST son estilos arquitectónicos y se diferencian principalmente en las siguientes líneas:

1) REST se trata de recursos y RPC se trata más de acciones.

2) En RPC, se puede adivinar que el contrato (que forma el lenguaje de cómo se entienden el cliente y el servidor) es el servicio y todos sus procedimientos. En REST, el contrato es la interfaz uniforme. Esta restricción de interfaz uniforme define la identificación y representación de recursos, mensajes de autodescripción (información para describir cómo procesar el mensaje) e hipermedia. Para obtener más información sobre los elementos REST, le sugiero que lea la disertación de Roy Fielding http://www.ics.uci.edu/~fielding…

3) En RPC, la semántica de acción y la semántica de error se especifican fuera de banda. En REST, las acciones están estandarizadas por la interfaz uniforme y también los errores.

4) En RPC, el soporte de almacenamiento en caché es limitado. Sí, puede crear aplicaciones RPC que se beneficien del almacenamiento en caché, pero no es algo que esté garantizado por el estilo RPC. En el caso de REST, el almacenamiento en caché es compatible con todos los intermediarios que entienden la interfaz uniforme.

5) En RPC, el cliente y el servidor comparten la propiedad del espacio de nombres de la URL, ya que los procedimientos pueden llamarse a través de que el cliente conozca la URL de un servicio u operación en particular. Esto significa que una vez que el cliente se ha implementado, es difícil para el servidor cambiar la estructura de URL para sus servicios. En REST, el servidor posee un espacio de nombres de URL, excepto un URL de punto de entrada único y los clientes pueden acceder a servicios individuales siguiendo los enlaces.

6) Un sistema RESTful está vinculado a la interfaz uniforme del protocolo de soporte HTTP y no puede hacer un túnel a través de múltiples protocolos, a diferencia de RPC.

Con una búsqueda rápida en Google encontré algunas respuestas increíbles, no quiero repetir, así que a continuación están los enlaces útiles:

¿Qué diferencia a un servicio web REST de uno similar a RPC?
¿Realmente sabes por qué prefieres REST sobre RPC?

Una definición muy básica:

RPC: utiliza una capa adicional de protocolo a través de Internet para implementar la comunicación.

RESTO: Utiliza una capa existente de protocolo de Internet que lo hace simple y sin estado.

REST es un estilo de arquitectura de software, mientras que RPC es un protocolo para la interacción.