Remote Procedure Protocols =========================== .. toctree:: :maxdepth: 1 :hidden: :includehidden: gRPC SOAP JSON_RPC These protocols enable remote method invocation between distributed systems using a structured request–response model, abstracting network details and presenting them as local procedure calls. .. list-table:: :widths: 20 65 20 :header-rows: 1 * - Protocol - Description - Use Case * - gRPC (Google Remote Procedure Call) - High-performance RPC framework using HTTP/2 and Protocol Buffers. *Enables efficient, strongly typed client-server communication.* - Microservices communication and API design * - SOAP (Simple Object Access Protocol) - Protocol for exchanging structured XML-based messages over HTTP, SMTP, etc. *Highly extensible with formal standards for security, transactions, and reliability.* - Enterprise web services with strict contracts and reliability requirements * - JSON-RPC - Lightweight remote procedure call protocol encoded in JSON. *Simple, transport-agnostic, and widely used in JavaScript environments.* - Browser-based apps, lightweight APIs, and WebSocket/HTTP integrations .. tab-set:: .. tab-item:: gRPC (Google Remote Procedure Call) **Spec:** https://grpc.io/docs/ **Transport:** HTTP/2 **IDL:** Protocol Buffers **Main Features:** - High-performance RPC using HTTP/2 and Protobuf - Supports streaming (client, server, bi-directional) - Strongly typed interfaces with cross-language support - Ideal for low-latency, high-throughput communication **Use Cases:** - Microservice-to-microservice communication - API development for modern cloud apps - Backend communication in containerized systems **Alternative Protocols:** - REST over HTTP – Widely used but less efficient - Thrift – Similar RPC protocol from Apache - SOAP – Heavier, XML-based RPC mechanism .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: What You Will Learn in This Section **Let us learn more about gRPC:** * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`gRPC Version&RFC Details ` * :ref:`gRPC Basic Setup on Ubuntu using IPv4 ` * :ref:`gRPC Basic Setup on Ubuntu using IPv6 ` * :ref:`gRPC Protocol Packet Details ` * :ref:`gRPC Usecases ` * :ref:`gRPC Basic Features ` * :ref:`gRPC Feature : Protocol Buffers (Protobuf) ` * :ref:`gRPC Feature : HTTP/2 Transport ` * :ref:`gRPC Feature : Cross-Language Support ` * :ref:`gRPC Feature : Streaming Support ` * :ref:`gRPC Feature : Contract-First API Design ` * :ref:`gRPC Feature : Built-in Authentication ` * :ref:`gRPC Feature : Load Balancing & Retry ` * :ref:`gRPC Feature : Pluggable Architecture ` * :ref:`gRPC Feature : Efficient Binary Format ` * :ref:`gRPC Feature : Error Handling & Status Codes ` * :ref:`Reference links ` .. button-link:: ./gRPC.html :color: primary :shadow: :expand: Jump to "gRPC" .. tab-set:: .. tab-item:: SOAP (Simple Object Access Protocol) **Spec:** W3C SOAP 1.1/1.2 **Transport:** HTTP, SMTP, more **Format:** XML-based messaging **Main Features:** - XML-based RPC protocol with formal specifications - Operates over multiple transports (HTTP, SMTP, etc.) - Extensible: supports WS-* standards for security, transactions, and more - Built-in error handling and strict message format **Use Cases:** - Enterprise applications with strict reliability, security, and contract requirements - Integration with legacy systems and third-party SOAP-based APIs - B2B communication and enterprise service buses (ESB) **Alternative Protocols:** - REST – Simpler, modern alternative for web APIs - gRPC – Efficient, strongly typed communication - JSON-RPC – Lightweight RPC for web apps .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: What You Will Learn in This Section **Let us learn more about SOAP:** * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`SOAP Version&IEEE Details ` * :ref:`SOAP Basic Setup on Ubuntu using IPv4 ` * :ref:`SOAP Basic Setup on Ubuntu using IPv6 ` * :ref:`SOAP Protocol Packet Details ` * :ref:`SOAP Usecases ` * :ref:`SOAP Basic Features ` * :ref:`Reference links ` .. button-link:: ./SOAP.html :color: primary :shadow: :expand: Jump to "SOAP" .. tab-set:: .. tab-item:: JSON-RPC **Spec:** JSON-RPC 2.0 Specification (https://www.jsonrpc.org/specification) **Transport:** Transport-agnostic (HTTP, WebSockets, etc.) **Format:** JSON **Main Features:** - Simple, stateless RPC using JSON - Lightweight and human-readable message format - Supports notifications (no response) and batch requests - Transport-independent (used over HTTP, WebSockets, pipes) **Use Cases:** - Lightweight client-server communication in web applications - JavaScript-based frontend-backend RPC - WebSocket-based APIs for real-time interaction **Alternative Protocols:** - gRPC – Strongly typed and binary for high-performance RPC - REST – Resource-based design for stateless communication - SOAP – Heavier, enterprise-grade protocol with strict specs .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: What You Will Learn in This Section **Let us learn more about JSON-RPC:** * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`JSON-RPC Version&IEEE Details ` * :ref:`JSON-RPC Basic Setup on Ubuntu using IPv4 ` * :ref:`JSON-RPC Basic Setup on Ubuntu using IPv6 ` * :ref:`JSON-RPC Protocol Packet Details ` * :ref:`JSON-RPC Usecases ` * :ref:`JSON-RPC Basic Features ` * :ref:`Reference links ` .. button-link:: ./JSON-RPC.html :color: primary :shadow: :expand: Jump to "JSON-RPC"