更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com大家好!我是深圳科技大学FSR实验室的同学,题目FFH是FSRlabForHarmony!而我也正在参与OpenHarmony从论文到开源提交研究的成长计划,以后我们也会继续在这个社区工作,记录学习心得和体会。参考文献JSON-RPC协议解析、扩展及应用-《中国科技论文在线》2008年第02期(中国知网)基于Java和PHP的JSON-RPC平台的Web服务优化|哈吉|国际工程技术发展会议(ICETD)(ubl.ac.id)简介最近在看JSON相关的文档资料。之前也写过两篇JSON相关的文章(有兴趣的同学可以去看看):OpenHarmony啃纸成长计划——为什么JSON会逐渐取代XML?OpenHarmony啃论文成长计划——几个像我这样有一点小程序或者web开发经验的常见JSON解析器对JSON都会很熟悉,因为我们前端经常把信息格式化成JSON,然后调用后端API获取数据转移。我们也清楚地知道,web服务的集合基本都是基于HTTP协议的,偶尔也会使用sockets进行通信。不过最近在研究手机APP的开发,接触了一些分布式系统,发现JSON也可以通过RPC作为分布式系统的数据交换格式,本文也有介绍,称之为JSON-RPC.RPCcomesfirst了解什么是RPC。相信大家都会混淆RPC和HTTP。其实这两个概念不在一个层次上。RPC:RemoteProcedureCall其实是一个很宽泛的概念名称。翻译过来就是远程过程调用。说白了就是一台机器远程调用另一台机器执行一个函数。HTTP是一种协议,HTTP是RPC的一种实现。在HarmonyOS中,很多地方都会用到RPC通信,比如跨设备调用,FA的远程拉取,FA的迁移流转等等。JSON-RPC摘要一般应用程序需要来自本地以外的各方的信息。但是这些应用程序可能使用不同的系统或平台。有一种可用于Web开发的技术,通常称为Web服务。在应用程序中,JSON-RPC是Web服务的替代方案之一。例如,有两个相互通信的应用程序。在信息传递过程中,应用程序可以从远程后端服务器执行服务,实现两个程序之间的直接通信,即使用JSON-RPC实现Web服务。原理如图:什么是JSON-RPC?RPC是一个简单的协议框架,因此可以用来为基于Web的服务构建一个新的协议。RPC允许应用程序调用不同系统中另一个程序的远程子进程。RPC在传输数据的过程中,使用特定的数据交换格式,如XML或JSON,作为系统之间的粘合剂。传输过程中数据交换格式为JSON格式的RPC协议称为JSON-RPC。官方的定义是:JSON-RPC是一种无状态的轻量级RPC协议。也就是说,JSON-RPC是一种远程过程调用协议。通常的处理机制是在两个通信实体之间建立点对点的数据连接。在连接的生命周期中,一方可能会调用对方提供的方法,客户端发出请求,服务器给出相应的响应。原理如图:JSON-RPC数据结构比如现在我们要实现一个减法函数,服务端和本地之间传递的数据结构很简单,如下:本质上,请求是通过方法发送的名称、参数和唯一ID。id非常重要,尤其是在分布式系统处理多个来源的多个请求时,因为它告诉被请求系统请求是从哪里来的,这样才能把响应结果给到正确的请求者。JSON-RPC和HTTP的区别首先看HTTP。对于http服务,需要给出相应的接口地址,需要定义http的方法等。但是JSON-RPC不需要,因为客户端在调用JSON-RPC的时候已经传递了方法名,以及请求的idrequester,还是上面的例子:所以rpc更像是熟人之间的日常交流,而http则像是陌生人之间的约定。当RPC(包括JSON-RPC)调用的时候,你已经知道它是谁,它长什么样,放在哪里,你就知道你让他用上面的东西,你随便用就完了。而http的意思就是需要提前和陌生人交流,商量一下别人的东西怎么借用,然后才能用。更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com
