Pull to refresh

Comments 13

клиент вызывает функцию напрямую, как если бы она была локальной

То есть, по RPC получив доступ можно вызывать любую функцию? Что с защитой в этом плане?

На фразе что "RPC бинарный, а REST текстовый" где-то вдалеке заплакали всякие SOAP и CORB'ы.
Вообще статья даже хуже, чем написал бы ChatGPT: RPC и REST это ортогональные вещи, которые (сюрприз!) могут быть реализованы в том числе посредством друг друга.

Не совсем. REST предполагает операции над ресурсами и первичны именно ресурсы, в RPC единицей является вызываемый метод. Так что все-таки это разные идеологии. Впрочем, автор статьи, конечно, ничего не знает ни о REST, ни о RPC.

А чем отличается унарный gRPC от Rest? В Rest Api у нас есть эндпоинт, который обрабаывает хендлер, то есть когда мы дергаем эндпоинт, то по сути мы запускаем функцию, которая уже дальше идет по слоям кода. С унарным gRPC также, мы дергаем функцию. Конечно, есть разница в http2, protobuf и тд. Но я про концепцию, в унарном gRPC и Rest вызывается функция)))

Что такое "унарный REST"? В концепции REST ничего такого нет.
Почитайте Филдинга. Или хотя бы Ричардсона.
REST как концепция (т.е. REST level 2 и выше) предполагает работу с ресурсами с помощью стандартных операций, там нет никаких своих функций. Можно вообще сделать маппинг HTTP verbs прямо на SQL и сделать один хендлер на множество RESTовых ресурсов и это будет вполне корректно.
В REST нет никаких функций.

Но да, часто любые вызовы по http называют REST, но это безграмотно и показывает, что автор не знает смысла используемых терминов.

Ответ: RPC (Remote Procedure Call) — это протокол, позволяющий программе на одном компьютере вызвать функцию на другом компьютере так, будто эта функция находится на первом компьютере.

Что, вот реально строго-настрого запрещено использовать RPC для информационного обмена в пределах одного хоста? Или всё-таки насчёт обязательности другого компьютера - это неоправданный перебор?

будто эта функция находится на первом компьютере.

Некорректно. Та же функция, но вызванная локально, скорее всего вернёт совсем иной результат.

UFO just landed and posted this here

Вопрос: RPC можно на фронте использовать или это чисто бэковская история?

В далекой-далекой галактике в 1997 году MS сотоварищи специально для использования во фронте придумали XML-RPC. А уж сколько с тех пор понаписали вариантов RPC для фронта - никто не считает.

Удалённый вызов процедур (иногда вызов удалённых процедур; RPC от англ. remote procedure call) — класс технологий, позволяющих программам вызывать функции или процедуры в другом адресном пространстве (на удалённых узлах, либо в независимой сторонней системе на том же узле). Обычно реализация RPC-технологии включает два компонента: сетевой протокол для обмена в режиме клиент-сервер и язык сериализации объектов (или структур для необъектных RPC). Различные реализации имеют отличающуюся друг от друга архитектуру и разнятся в возможностях: одни реализуют архитектуру SOA, другие — CORBA или DCOM. На транспортном уровне RPC используют в основном протоколы TCP и UDP, однако, некоторые построены на основе HTTP.

Существует множество технологий, обеспечивающих RPC, среди них:

DCE/RPC — двоичный протокол на базе различных транспортных протоколов, в том числе TCP/IP и Named Pipes из протокола SMB/CIFS;

DCOM — объектно-ориентированное расширение DCE/RPC, позволяющее передавать ссылки на объекты и вызывать методы объектов через таковые ссылки;

Microsoft RPC;

gRPC;

ZeroC ICE;

JSON-RPC — текстовый протокол на базе HTTP[1]

.NET Remoting — двоичный протокол на базе TCP, UDP, HTTP;

Java RMI — вызов удалённых методов для платформы Java[2];

SOAP — текстовый протокол на базе HTTP[3];

Sun RPC — двоичный протокол на базе TCP и UDP и XDR[4], второе название — ONC RPC[5];

XML RPC — текстовый протокол на базе HTTP[6].

Этой аббревиатуре 20+ лет, как и технологии.

MS на DCOM реализовывал как вариант.

Sign up to leave a comment.

Articles