Открыть сервис

RPC-стиль

RPC-стиль — это архитектурный подход к проектированию программного обеспечения, основанный на принципах удалённого вызова процедур (Remote Procedure Call, RPC), при котором взаимодействие между клиентом и сервером строится вокруг вызова функций или методов, а не передачи документов или сообщений. В контексте веб-разработки и API RPC-стиль противопоставляется REST (Representational State Transfer) и другим подходам, таким как GraphQL. Основная идея заключается в том, что клиент отправляет запрос на выполнение определённой операции (например, «получить пользователя» или «создать заказ»), а сервер возвращает результат этой операции. Данный стиль ориентирован на действия (глаголы), а не на ресурсы (существительные), что отличает его от REST.

История и происхождение

Концепция удалённого вызова процедур возникла в 1970-х годах в рамках распределённых вычислительных систем. Первые реализации, такие как Xerox Network Systems (XNS) и Sun RPC (1980-е годы), заложили основы для передачи вызовов функций между узлами сети. В 1990-х годах RPC-стиль получил распространение в корпоративных системах через протоколы CORBA (Common Object Request Broker Architecture) и DCOM (Distributed Component Object Model) от Microsoft. Однако эти технологии были сложны в реализации и имели проблемы с совместимостью.

Возрождение RPC-стиля произошло в 2000-х годах с появлением веб-сервисов на основе XML-RPC и SOAP (Simple Object Access Protocol). SOAP, разработанный консорциумом W3C, стал стандартом для корпоративных приложений, но критиковался за избыточность и сложность. В 2010-х годах RPC-стиль вернулся в упрощённой форме — JSON-RPC и gRPC. gRPC, созданный компанией Google в 2015 году, стал популярным выбором для микросервисной архитектуры благодаря высокой производительности и поддержке бинарной сериализации (Protocol Buffers).

Основные принципы

RPC-стиль базируется на следующих концепциях:

Виды RPC-стилей

Классический RPC (Sun RPC, DCE/RPC)

Использует бинарные протоколы и часто привязан к конкретным языкам программирования (например, C). Применялся в операционных системах и сетевых файловых системах (NFS).

XML-RPC и SOAP

Основаны на XML. XML-RPC — простой протокол для вызова процедур через HTTP. SOAP — более сложный стандарт с поддержкой безопасности, транзакций и расширений (WS-*). SOAP используется в корпоративных системах (например, в банковских и ERP-системах), но считается громоздким.

JSON-RPC

Лёгкий протокол, использующий JSON для сериализации. Определяет формат запроса: {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}. Ответ содержит результат или объект ошибки. JSON-RPC популярен в веб-приложениях и инструментах автоматизации (например, в Ethereum).

gRPC

Современный RPC-фреймворк от Google, использующий Protocol Buffers (protobuf) для сериализации и HTTP/2 для транспорта. Поддерживает четыре типа вызовов: простой (unary), потоковая передача от сервера, потоковая передача от клиента и двунаправленная потоковая передача. gRPC широко применяется в микросервисах, мобильных приложениях и системах реального времени.

Thrift

Разработан Facebook (в настоящее время компания Meta признана экстремистской и запрещена в РФ) как кроссплатформенный RPC-фреймворк. Использует собственный IDL и поддерживает множество языков (C++, Java, Python, PHP и др.). Thrift популярен в высоконагруженных системах (например, в Cassandra и Hadoop).

Сравнение с REST

RPC-стиль и REST представляют собой два противоположных подхода к проектированию API:

Применение

RPC-стиль используется в следующих областях:

Критика

RPC-стиль подвергается критике по нескольким причинам:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →