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

La llamada a procedimiento remoto (RPC) y REST son dos estilos arquitectónicos del diseño de API. Las API son mecanismos que permiten a dos componentes de software comunicarse entre sí mediante un conjunto de definiciones y protocolos. Los desarrolladores de software utilizan componentes desarrollados previamente o de terceros para realizar funciones, por lo que no tienen que escribir todo desde cero. Las API de RPC permiten a los desarrolladores llamar a funciones remotas en servidores externos como si fueran locales en su software. Por ejemplo, se puede agregar funcionalidad de chat a la aplicación a través de una llamada remota a las funciones de mensajería de otra aplicación de chat. Por el contrario, las API de REST permiten realizar operaciones de datos específicas en un servidor remoto. Por ejemplo, la aplicación podría insertar o modificar datos de empleados en un servidor remoto mediante las API de REST.

Más información sobre las API »

Más información sobre las API de RESTful »

¿Cuáles son las similitudes entre RPC y REST?

Tanto la llamada a procedimiento remoto (RPC) como REST son formas de diseñar las API. Las API son esenciales en el diseño web moderno y en otros sistemas distribuidos. Permiten que dos aplicaciones o servicios independientes y distribuidos se comuniquen sin conocer el funcionamiento interno del otro. Estas dos aplicaciones o servicios pueden tener poco que ver entre sí, salvo por un pequeño intercambio de datos. 

Las API son también un mecanismo habitual para que el backend de un programa (el componente lógico) se comunique con el frontend de un programa (el componente de visualización). Cuando se diseñan páginas y aplicaciones web con API en lugar de con una integración compatible, se garantiza que puedan escalar y cambiar con menos reescritura de código.

A continuación, analizaremos otras similitudes entre las API de RPC y de REST.

Abstracción

Mientras que las comunicaciones de red son el objetivo principal de las API, los desarrolladores de API no tienen que encargarse de las comunicaciones de nivel inferior. Esto permite a los desarrolladores centrarse en la función más que en la implementación técnica.

Comunicación

Tanto REST como RPC utilizan HTTP como protocolo subyacente. Los formatos de mensaje más populares en RPC y REST son JSON y XML. Se prefiere JSON por su legibilidad y flexibilidad.

Compatibilidad entre lenguajes de programación

Los desarrolladores pueden implementar una API de RESTful o de RPC en el lenguaje que prefieran. Siempre que el elemento de comunicación de red de la API cumpla la norma de la interfaz RESTful o RPC, se podrá escribir el resto del código en cualquier lenguaje de programación.

Principios de arquitectura de RPC en comparación con REST

En una llamada a procedimiento remoto (RPC), el cliente realiza una llamada a una función remota (también conocida como método o procedimiento) en un servidor. Normalmente, se transfieren uno o varios valores de datos al servidor durante la llamada.

Por el contrario, el cliente REST solicita al servidor que realice una acción en un recurso específico del servidor. Las acciones se limitan solo a crear, leer, actualizar y eliminar (CRUD) y se transmiten como verbos HTTP o métodos HTTP.

RPC se centra en funciones o acciones, mientras que REST se centra en recursos u objetos.

Principios de la RPC

A continuación, analizaremos algunos principios que suelen seguir los sistemas RPC. Sin embargo, estos principios no están estandarizados como los de REST.

Invocación remota

Las RPC las efectúa un cliente a una función del servidor remoto como si se tratara de una llamada local al cliente.

Transferencia de parámetros

El cliente suele enviar parámetros a una función del servidor, de forma muy similar a una función local.

Códigos auxiliares

Los códigos auxiliares de funciones existen tanto en el cliente como en el servidor. En el lado del cliente, realizan la llamada a la función. En el servidor, invocan la función real.

Principios de REST

Los principios de REST están estandarizados. Una API de REST debe seguir estos principios para ser clasificada como RESTful.

Cliente-servidor

La arquitectura cliente-servidor de REST desacopla clientes y servidores. Trata a ambos como sistemas independientes.

Sin estado

El servidor no guarda ningún registro del estado del cliente entre solicitud y solicitud.

Se puede almacenar en caché

El cliente o los sistemas intermediarios pueden almacenar en caché las respuestas del servidor en función de si un cliente da permiso específico para que se guarde una respuesta.

Sistema de capas

Pueden existir intermediarios entre el cliente y el servidor. Ni el cliente ni el servidor tienen conocimiento de ellos y funcionan como si estuvieran conectados directamente.

Interfaz uniforme

El cliente y el servidor se comunican con la API de REST a través de un conjunto estandarizado de instrucciones y formatos de mensajería. Los recursos se identifican por su URL, y esta URL se conoce como punto de conexión de una API de REST.

Cómo funcionan: diferencias entre RPC y REST

En la llamada a procedimiento remoto (RPC), el cliente usa HTTP POST para llamar a una función específica por su nombre. Los desarrolladores del lado del cliente deben conocer el nombre y los parámetros de la función de antemano para que la RPC funcione.

En REST, los clientes y los servidores usan verbos HTTP como GET, POST, PATCH, PUT, DELETE y OPTIONS para ejecutar las opciones. Los desarrolladores solo necesitan conocer las URL de los recursos del servidor y no tienen que preocuparse por los nombres de las funciones individuales.

La siguiente tabla muestra el tipo de código que usa el cliente para realizar acciones similares en RPC y REST.

Acción

RPC

REST

Comentario

Adición de un producto nuevo a una lista de productos

POST /addProduct HTTP/1.1

HOST: api.ejemplo.com

Content-Type: application/json

{"name": "Camiseta", "price": "22,00", "category": "Ropa"}

POST /products HTTP/1.1

HOST: api.ejemplo.com

Content-Type: application/json

{"name": "Camiseta", "price": "22,00", "category": "Ropa"}

RPC usa POST en la función y REST usa POST en la URL.

Recuperación de los detalles de un producto

POST /GetProduct HTTP/1.1

HOST: api.ejemplo.com

Content-Type: application/json

{"productID": "123"}

GET /products/123 HTTP/1.1

HOST: api.ejemplo.com

RPC usa POST en la función y pasa el parámetro como objeto JSON. REST usa GET en la URL y pasa el parámetro en la URL.

Actualización del precio de un producto

POST /UpdateProductPrice HTTP/1.1

HOST: api.ejemplo.com

Content-Type: application/json

{"productId": "123", "newPrice": "20,00"}

PUT /products/123 HTTP/1.1

HOST: api.ejemplo.com

Content-Type: application/json

{"price": "20.00"}

RPC usa POST en la función y pasa el parámetro como objeto JSON. REST usa PUT en la URL y pasa el parámetro en la URL y como objeto JSON.

Eliminación de un producto

POST /deleteProduct HTTP/1.1

HOST: api.ejemplo.com

Content-Type: application/json

{"productId": "123""}

DELETE /products/123 HTTP/1.1

HOST: api.ejemplo.com

RPC usa POST en la función y pasa el parámetro como objeto JSON. REST usa DELETE en la URL y pasa el parámetro en la URL.

Deferencias clave con respecto a REST

Tanto la llamada a procedimiento remoto (RPC) como REST son formas de diseñar las correspondientes interfaces de sistemas cliente-servidor para la comunicación a través de Internet. Sin embargo, la estructura, la aplicación y los principios subyacentes difieren. Los sistemas diseñados con REST se conocen como API de RESTful, mientras que los sistemas diseñados con RPC son simplemente API de RPC.

A continuación exponemos algunas diferencias más.

Tiempo de desarrollo

RPC se desarrolló a finales de los 70 y principios de los 80, mientras que REST fue un término acuñado por primera vez por el informático Roy Fielding en el año 2000.

Formato operativo

Una API de REST dispone de un conjunto estandarizado de operaciones de servidor gracias a los métodos HTTP, pero las API de RPC no. Algunas implementaciones de RPC proporcionan un marco para operaciones estandarizadas.

Formato de transmisión de datos

REST puede transferir cualquier formato de datos y múltiples formatos, como JSON y XML, dentro de la misma API.

Sin embargo, con las API de RPC, el formato de los datos lo selecciona el servidor y se fija durante la implementación. Puede tener implementaciones RPC de JSON o RPC de XML específicas, y el cliente no tiene flexibilidad.

Estado

En el contexto de las API, sin estado se refiere a un principio de diseño en el que el servidor no almacena ninguna información sobre las interacciones previas del cliente. Todas las solicitudes de la API se tratan de manera independiente, y el servidor no depende de ningún estado almacenado del cliente para procesar la solicitud.

Los sistemas REST deben ser siempre sin estado, pero los sistemas RPC pueden ser con o sin estado, dependiendo del diseño.

Cuándo usar RPC en lugar de REST

La llamada a procedimiento remoto (RPC) se utiliza normalmente para llamar a funciones remotas en un servidor que requieren un resultado de acción. Puede utilizarla cuando requiera cálculos complejos o desee desencadenar un procedimiento remoto en el servidor, ocultando el proceso al cliente.

He aquí acciones en las que la RPC es una buena opción:

  • Hacer una foto con la cámara de un dispositivo remoto
  • Utilizar un algoritmo de machine learning en el servidor para identificar fraudes
  • Transferir dinero de una cuenta a otra en un sistema bancario a distancia
  • Reiniciar un servidor de forma remota

Una API de REST se utiliza normalmente para realizar operaciones de creación, lectura, actualización y eliminación (CRUD) de un objeto de datos en un servidor. Esto hace que las API de REST se adapten bien a los casos en los que los datos del servidor y las estructuras de datos deben exponerse de manera uniforme.

Estas son acciones en las que una API de REST es una buena opción:

  • Agregar un producto a una base de datos
  • Extraer el contenido de una lista de reproducción de música
  • Actualizar la dirección de una persona
  • Borrar una entrada de blog

¿Por qué REST ha sustituido a RPC?

Aunque las API web de REST son la norma hoy en día, las llamadas a procedimientos remotos (RPC) no han desaparecido. Una API de REST se suele utilizar en aplicaciones, ya que es más fácil de entender e implementar para los desarrolladores. Sin embargo, la RPC sigue existiendo y se utiliza cuando se adapta mejor al caso de uso en cuestión.

Las implementaciones modernas de RPC, como gRPC, gozan ahora de mayor popularidad. Para algunos casos de uso, gRPC funciona mejor que RPC y REST. Permite las comunicaciones cliente-servidor en tiempo real en lugar del patrón de intercambio de datos de solicitud y respuesta.

Diferencias entre RPC y REST

 

RPC

REST

¿Qué es?

Un sistema permite a un cliente remoto llamar a un procedimiento en un servidor como si fuera local. 

Un conjunto de reglas que define el intercambio de datos estructurados entre un cliente y un servidor.

Se utiliza para lo siguiente:

Realizar acciones en un servidor remoto.

Realizar operaciones de creación, lectura, actualización y eliminación (CRUD) de objetos remotos.

Uso idóneo

Cuando se requieran cálculos complejos o desencadenar un proceso remoto en el servidor.

Cuando los datos del servidor y las estructuras de datos deban exponerse de manera uniforme.

Control de estado

Con o sin estado.

Sin estado.

Formato de transmisión de datos

En una estructura coherente definida por el servidor y aplicada en el cliente.

En una estructura determinada independientemente por el servidor. Se pueden transferir varios formatos diferentes dentro de la misma API.

¿Cómo puede AWS satisfacer sus necesidades de API?

Amazon Web Services (AWS) cuenta con una gama de servicios y herramientas para ayudar a los diseñadores de API a crear, ejecutar y administrar aplicaciones y servicios modernos basados en API. Para obtener más información, consulte cómo crear aplicaciones modernas en AWS.

Estos son algunos ejemplos de servicios de AWS que pueden ser de ayuda para que cumpla sus requisitos de API:

  • Amazon API Gateway permite a los desarrolladores crear, publicar y administrar las API a escala. Con API Gateway, puede crear API de REST optimizadas para aplicaciones web y arquitecturas de microservicios en contenedores.
  • Elastic Load Balancing (ELB) distribuye el tráfico de red para mejorar la escalabilidad de las aplicaciones. Puede enrutar y equilibrar la carga del tráfico de gRPC entre microservicios o entre clientes y servicios habilitados para gRPC. Esto permite administrar sin problemas el tráfico de gRPC en las arquitecturas de software sin cambiar ninguna infraestructura subyacente de sus clientes o servicios.
  • Amazon Virtual Private Cloud (Amazon VPC) Lattice es un servicio de redes de aplicaciones que conecta, monitorea y protege de forma coherente las comunicaciones entre sus servicios. Escale automáticamente los recursos de computación y de red para admitir cargas de trabajo HTTP, HTTPS y gRPC de gran ancho de banda.

Cree una cuenta hoy mismo para empezar a utilizar las API de REST y las API de llamadas a procedimientos remotos (RPC) en AWS.