В чем разница между json-rpc и json-api? - PullRequest
0 голосов
/ 17 мая 2018

Кто-нибудь может объяснить преимущество использования json-rpc над json-api и наоборот?Первый и второй формат основаны на JSON, но где я должен использовать один, а где другой?

1 Ответ

0 голосов
/ 19 мая 2018

Примечание: я могу столкнуться с небольшим пристрастием. Я являюсь автором серверной библиотеки Json-RPC.ne t.

Json-RPC - это спецификация удаленного вызова процедуры. Существует несколько библиотек, которые вы можете использовать для связи по этому протоколу. Он не основан на REST и не зависит от транспорта. Вы можете запустить его через HTTP, как это очень часто встречается, вы также можете использовать его через сокет или любой другой транспорт, который вы считаете подходящим. Так что это довольно гибко в этом отношении. Вы также можете выполнять запросы от сервера к клиенту вместе с запросами от клиента к серверу, размещая RPC-сервер на клиенте или сервере.

Json-API - это спецификация для построения REST API. Есть несколько библиотек, которые вы можете использовать, чтобы начать работу с ним. В отличие от Json-Rpc, он требует, чтобы вы размещали его на HTTP-сервере. Вы не можете вызывать функции на клиенте с ним. Вы не можете запустить его через транспортный протокол не-http. Будучи основанным на REST, он отлично справляется с предоставлением информации о ресурсах. Если вам нужен API, основанный на идее Create, Read, Update, Delete для некоторых коллекций ресурсов, то это может быть хорошим выбором.

Json-API будет лучше, если ваш API основан на ресурсах, и вы хотите, чтобы ваш API просматривался человеком без настройки документации для него. Хотя этот человек, вероятно, должен был бы быть в области разработки программного обеспечения, чтобы понять это.

Json-RPC будет лучше, если ваш API основан на функциях или вам нужна гибкость, которую он обеспечивает. Json-RPC по-прежнему можно использовать для манипулирования ресурсами, создавая функции «Создать», «Чтение», «Обновление» и «Удалить» для ваших ресурсов, но вы не получаете возможности просмотра, поскольку он не основан на REST. Он все еще может быть исследован (не просмотрен) человеком, сгенерировав документацию, основанную на функциях, которые вы предоставляете.

Популярным примером того, что использует Json-Rpc, является BitCoin.

Существует множество популярных API на основе REST, а Json-API - это спецификация с набором инструментов, которые помогут вам правильно выполнить REST.

-

Примечание: Ни один из них (Json-RPC или Json-API) не годится, если учитывать время разработки, производительность или эффективное использование сетевых ресурсов.

Если вы заботитесь о производительности, эффективности или времени разработки, взгляните на gRPC от Google, который является фантастическим в этом отношении и все же может сократить время разработки больше, чем использование REST API в качестве клиента и сервера. код может быть сгенерирован из файла определения протокола.

...