什么是RPC

全称是Remote Procedure Call远程过程调用。直观的理解就是,通过网络来请求服务,不用知晓底层网络协议的细节。
RPC支持的格式很多,比如XML格式,JSON格式等等。

这种介绍,一般都是皮毛,去看维基百科上的介绍会更加深入一些:

在分布式计算中,远程过程调用就是当计算机程序运行过程中导致一个子进程在不同的地址空间运行,通常是另一台电脑,通过网络共享地址空间。这时候,这个子进程就像是在自己的电脑上运行的一样,不用编程者显式处理编码细节,毕竟进程运行在别的电脑了嘛。

这其实就是C/S架构的交互形式,发起调用的是客户端,执行子进程的是服务端。一般来说,这种实现是通过请求-响应的消息传递机制。

另外,RPC也是IPC的一种形式。所谓IPC是指Inter-Process Communication,进程间通信。

什么是JSON-RPC

JSON是一种轻量级的数据交换格式,它可以表示数值、字符串、序列及名/值对集合。

JSON-RPC是一种无状态的,轻量级的远程程序调用协议。

如何使用JSON-RPC

JSON-RPC协议中的客户端一般是为了向远程系统请求执行某个方法。客户端向实现了JSON-RPC协议的服务端发送请求,多个输入参数能够通过数组或者对象传递到远程方法,这个远程方法也能返回多个输出数据,具体是什么,当然要看具体的方法实现。

所有的传输都是单个对象,用JSON格式进行序列化。请求包含三个特定属性:

  • method,方法,是等待调用的远程方法名,字符串类型
  • params,参数,对象类型或者是数组,向远程方法传递的多个参数值
  • id,任意类型值,用于和最后的响应进行匹配,也就是这里设定多少,后面响应里这个值也设定为相同的

响应的接收者必须能够给出所有请求以正确的响应。响应也有三个属性:

  • result,结果,是方法的返回值,如果方法执行时出现了错误,那么这个值必须为空
  • error,错误,当出现错误时,返回一个特定的错误编码,没有错误就为空值
  • id,就是请求带的那个id值,用于匹配

需要注意到,有一些场景下,是不用返回值的,比如只对客户端进行通知,由于不用对请求的id进行匹配,所以这个id就是不必要的,置空或者直接不要了。

END.

参考链接:
https://www.jianshu.com/p/49cd5c9a1664
http://cw.hubwiz.com/card/c/ethereum-json-rpc-api/
https://en.wikipedia.org/wiki/Remote_procedure_call

JSON-RPC是什么东西相关推荐

  1. json 是个什么东西?

    JSONP原理 JSONP(JSON with Padding),就是异步请求跨域的服务器端时,不是直接返回数据,而是返回一个js方法,把数据作为参数传过来.如果只是跨域传递数据那么这种方式是比较好的 ...

  2. jsonrpc php使用,利用php怎么编写一个json rpc框架

    利用php怎么编写一个json rpc框架 发布时间:2020-12-25 15:24:41 来源:亿速云 阅读:71 作者:Leah 本篇文章为大家展示了利用php怎么编写一个json rpc框架, ...

  3. C语言编写的简单HTTP json RPC

    目录 0 概述 0.0 参考 0.1 HTTP 服务 0.2 JSON RPC HTTP错误码 0.3 目录结构 1 使用 1.1 接口访问示例 1.2 方法注册 1.3 修改监听端口 4 源码获取 ...

  4. jsonrpc php使用,php实现的一个简单json rpc框架实例

    json rpc 是一种以json为消息格式的远程调用服务,它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列的实现.这种远程过程调用可以使用http作为传输 ...

  5. 以太坊—JSON RPC API

    2019独角兽企业重金招聘Python工程师标准>>> Geth 使用JSON数据格式, JSON-RPC协议作为客户端和网络进行交互的方法. Geth 1.4 的 pub/sub ...

  6. JSON是个什么东西?

    JSON是什么? JSON 是一种数据格式.它本身是一串字符串,只是它有固定格式的字符串,符合这个数据格式要求的字符串,我们称之为JSON. JSON 常用来数据传输,因为它易于程序之前读写操作. J ...

  7. JSON.stringify() / JSON.parse() / JSON 真是个好东西

    目录 1. JSON 基本概念 1.1 JavaScript 对象表示法 1.2 JSON 文件 1.3 JSON 语法 2. XML VS JSON 2.1 共同点 2.2 不同点 2.3 使用步骤 ...

  8. 远程过程调用(RPC)

    在第二篇教程中我们介绍了如何使用工作队列(work queue)在多个工作者(woker)中间分发耗时的任务. 可是如果我们需要将一个函数运行在远程计算机上并且等待从那儿获取结果时,该怎么办呢?这就是 ...

  9. RPC service

    RpcService是什么东西??? RPC : 远程过程调用协议 百度百科:(用到的时候再理解) http://baike.baidu.com/link?url=DrhEdB8_JQMcOGOtcP ...

  10. 晁岳攀---基于go的 rpc框架实践

    晁岳攀:软件开发的老兵,Scala集合技术手册(简/繁版)的作者, 高性能的服务治理rpcx (Go)框架的开发者,先前在同方.Motorola.comcast从事软件开发工作,现在在微博平台研发部做 ...

最新文章

  1. 兄弟9020cdn废粉仓位置_硒鼓的无废粉仓设计是否真的有效?
  2. 路由器学习之静态路由实验
  3. Qt for ios 设置程序图标(logo)和启动页(splash)
  4. libusb开发指南
  5. JDK 8与JDK 10:三元/拆箱的区别
  6. Tensorflow实现多元线性回归
  7. 黑客魔术!如何黑掉一台根本不联网的电脑
  8. mysql优化之query优化
  9. clover 在win10下工作不正常
  10. SQL Server Pivot 隐藏group
  11. element icon图标方向旋转
  12. BootLoader学习笔记(1)
  13. python123m与n的数学运算_python小白进阶之路三——循环结构入门练习+Random库练习...
  14. 9个元素换6次达到排序序列_全面讲解十大经典排序算法(Python实现)
  15. 基于MATLAB 关于圆的研究
  16. android afinal 框架 finalhttp,【Android实战】Afinal框架的使用大全案例
  17. 前端学习之一——关于第一次使用VSCode打开前端代码并启动问题
  18. 【西门子PLC标识的字母代表什么?】
  19. MDK5:正点原子stm32遇Target not created的解决方法
  20. typecho图标_handsome+Typecho美化过程【持续更新】包括踩坑解决办法

热门文章

  1. firefox 邮箱分类过滤
  2. 手把手教你打造全宇宙最强的专属 Firefox 浏览器
  3. php有没有ispostback,php用什么表示IsPostBack?
  4. IDEA使用Tomcat部署项目
  5. Prometheus监控系统+Grafana可视化工具搭建
  6. C专家编程 三 C语言声明是如何形成的
  7. Maven项目 整合 tomcat插件== tomcat7:run
  8. Linux USB网卡驱动安装
  9. 基于Matlab科技论文绘图:plot、imagesc
  10. VMware 镜像安装