JSRPC (JSON-RPC) es un protocolo de llamada a procedimiento remoto (RPC) que utiliza JSON como formato de serialización para los datos. Se distingue por su simplicidad y su enfoque en la interoperabilidad, permitiendo que clientes y servidores escritos en diferentes lenguajes de programación se comuniquen de manera efectiva. A diferencia de otros protocolos RPC más complejos, JSRPC define un conjunto mínimo de reglas para la estructura de las solicitudes y respuestas, incluyendo el nombre del método a invocar, los parámetros y un identificador de solicitud opcional para correlacionar respuestas asíncronas. Soporta llamadas síncronas y asíncronas, así como notificaciones (llamadas sin respuesta esperada).

La implementación de JSRPC es ubicua debido a su simplicidad y la omnipresencia de JSON. Es comúnmente utilizado en APIs RESTful donde se necesita una estructura RPC más formal, o en microservicios para la comunicación interna cuando se prefiere una alternativa más ligera que gRPC o SOAP. Ejemplos concretos incluyen su uso en la interacción con nodos de blockchain (como Ethereum con su API JSON-RPC), en la comunicación entre componentes de aplicaciones web (especialmente en el lado del cliente con JavaScript), y en herramientas de desarrollo o sistemas de automatización que requieren una interfaz programática sencilla y bien definida. Muchas bibliotecas y frameworks en lenguajes como Python, Java, Go y Node.js ofrecen soporte nativo o de terceros para JSRPC.

Para un arquitecto de sistemas, JSRPC es relevante por su equilibrio entre simplicidad y funcionalidad. Ofrece una alternativa ligera a protocolos RPC más pesados, reduciendo la sobrecarga de desarrollo y la complejidad de la infraestructura. La elección de JSRPC es estratégica cuando la interoperabilidad entre diferentes lenguajes y plataformas es una prioridad, y cuando el rendimiento extremo o las características avanzadas como el streaming bidireccional (presentes en gRPC) no son requisitos críticos. Sus principales trade-offs incluyen la falta de un sistema de tipos fuerte inherente (lo que puede requerir validación adicional en la aplicación) y una menor eficiencia en la serialización de datos en comparación con formatos binarios. Sin embargo, su facilidad de depuración y la amplia disponibilidad de herramientas JSON lo hacen atractivo para APIs públicas y sistemas donde la agilidad y la facilidad de integración son clave.