网站首页 > 博客文章 正文
技术简单介绍
json-rpc是基于json的跨语言远程调用协议。比xml-rpc、webservice等基于文本的协议数据传输格小;相对hessian、java-rpc等二进制协议便于调试、实现、扩展,是很优秀的一种远程调用协议。眼下主流语言都已有json-rpc的实现框架,java语言中较好的json-rpc实现框架有jsonrpc4j、jpoxy、json-rpc。三者之中jsonrpc4j既可独立使用。又可与spring无缝集合,比較适合于基于spring的项目开发。
一、JSON-RPC协议描写叙述
json-rpc协议很easy,发起远程调用时向服务端数据传输格式例如以下:
{ "method": "sayHello", "params": ["Hello JSON-RPC"], "id": 1}
參数说明:
method: 调用的方法名
params: 方法传入的參数。若无參数则传入 []
id : 调用标识符。用于标示一次远程调用过程
server其收到调用请求,处理方法调用,将方法效用结果效应给调用方;返回数据格式:
{ "result": "Hello JSON-RPC", "error": null, "id": 1 }
參数说明:
result: 方法返回值。若无返回值。则返回null。
若调用错误,返回null。
error :调用时错误,无错误返回null。
id : 调用标识符,与调用方传入的标识符一致。
以上就是json-rpc协议规范,很easy,小巧。便于各种语言实现。
二、JSON-RPC简单演示样例
2.1、server端Java调用演示样例
jsonrpc4jserver端java演示样例:
public class HelloWorldServlet extends HttpServlet { private static final long serialVersionUID = 3638336826344504848L; private JsonRpcServer rpcService = null; @Override public void init(ServletConfig config) throws ServletException { super.init(config); rpcService = new JsonRpcServer(new HelloWorldService(), HelloWorldService.class); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { rpcService.handle(req, resp); } }
2.2、Javaclient调用演示样例
jsonrpc4j的Javaclient调用演示样例:
JsonRpcHttpClient client = new JsonRpcHttpClient( new URL("http://127.0.0.1:8080/index.json")); Map<String,String> headers = new HashMap<String,String>(); headers.put("name", "剑白"); client.setHeaders(headers); String properties = client.invoke("getSystemProperties", null, String.class); System.out.println(properties);
2.3、JavaScriptclient调用演示样例
基于jsonrpcjs的JavaScriptclient调用演示样例:
var rpc = new jsonrpc.JsonRpc('http://127.0.0.1:8080/index.json'); rpc.call('getSystemProperties', function(result){ alert(result); });
2.4、直接GET请求进行调用
无需不论什么client。仅仅需手工拼接參数进行远程调用,请求URL例如以下:
http://127.0.0.1:8080/index.json?method=getSystemProperties&id=3325235235235¶ms=JTViJTVk
參数说明:
method : 方法名
params :调用參数。json的数组格式[], 将參数需先进行url编码,再进行base64编码
id : 调用标识符,随意值。
三、JSON-RPC总结
json-rpc是一种很轻量级的跨语言远程调用协议。实现及使用简单。
仅需几十行代码,就可以实现一个远程调用的client。方便语言扩展client的实现。
server端有php、java、python、ruby、.net等语言实现,是很不错的及轻量级的远程调用协议。
猜你喜欢
- 2024-10-30 SpringCloudRPC远程调用核心原理:代理模式与RPC客户端实现类
- 2024-10-30 基于HTTP RESTFul的远程调用和基于RPC的远程调用有什么区别?
- 2024-10-30 23 | RPC框架:10万QPS下如何实现毫秒级的服务调用?
- 2024-10-30 基于HTTPRESTFul的远程调用和基于RPC的远程调用有什么区别?
- 2024-10-30 远程方法调用RMI详解,和RPC的思路很相似
- 2024-10-30 一文读懂几种远程调用的区别与联系
- 2024-10-30 架构实战面试必备:如何实现RPC调用保护
- 2024-10-30 事务的使用:不要在事务中包含任何rpc调用
- 2024-10-30 SpringBoot+RabbitMQ 实现 RPC 调用
- 2024-10-30 Java进阶:远程过程调用(RPC)及回调方法(一)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)