JSON-RPC轻量级远程调用协议介绍及使用
文件夹
技术简单介绍 1
一、JSON-RPC协议描写叙述 1
二、JSON-RPC调用简单演示样例 1
2.1、server端Java调用演示样例 1
2.2、Javaclient调用演示样例 2
2.3、PHPclient调用演示样例 2
2.3、JavaScriptclient调用演示样例 2
2.4、直接GET请求进行调用 2
三、JSON-RPC总结 3
參考文档 3
技术简单介绍
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、PHPclient调用演示样例
基于json-rpc-php的PHPclient调用演示样例:
<?php include(dirname(__FILE__)."/lib/client/JsonRpcClient.php");
$client = new JsonRpcClient("http://10.13.49.234:8080/index.json");
$response = $client->getSystemProperties();
echo $response->result;
?>
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等语言实现,是很不错的及轻量级的远程调用协议。
參考文档
http://code.google.com/p/jsonrpc4j/
http://json-rpc.org/wiki/implementations
http://en.wikipedia.org/wiki/JSON-RPC
https://github.com/gimmi/jsonrpcjs
http://bitbucket.org/jbg/php-json-rpc
https://github.com/Pozo/json-rpc-php
https://github.com/subutux/json-rpc2php
转载于:https://www.cnblogs.com/h2zZhou/p/9541775.html
JSON-RPC轻量级远程调用协议介绍及使用相关推荐
- 基于 Hessian 轻量级远程调用的原理及示例
1 简介 Hessian 是 Caucho 公司开发的一种基于二进制 RPC 协议(Remote Procedure Call protocol)的轻量级远程调用框架,其使用简单的方法提供了 RMI ...
- j2ee中常用的五种远程调用协议
一.综述 本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能. RMI是java语言本身提供的远程通 ...
- LDAP 轻量级目录访问协议 介绍
LDAPS 和 LDAP 区别 LDAP(轻型目录应用程序协议)和安全LDAP(LDAPS)是应用程序与基础结构中的网络目录或域控制器之间使用的连接协议. 注意,LDAP以明文形式传输通信,而LDA ...
- SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用
一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层 ...
- Replicate(网络复制),ActorRole(角色),Ownership(所有权)以及RPC(远程调用)等等...
I. Replication Replication指的是 从服务端向客户端 传递数据和信息的行为.注意是单向的,不会从客户端传递信息和数据到服务端. 假设一个Actor被设置为Replicates, ...
- 从 0 到 1:全面理解 RPC 远程调用!
作者 | Python编程时光 责编 | 胡巍巍 什么是RPC呢?百度百科给出的解释是这样的:"RPC(Remote Procedure Call Protocol)--远程过程调用协议,它 ...
- python rpc调用_从0到1:全面理解 RPC 远程调用
上一篇关于 WSGI 的硬核长文,不知道有多少同学,能够从头看到尾的,不管你们有没有看得很过瘾,反正我是写得很爽,总有一种将一样知识吃透了的错觉. 今天我又给自己挖坑了,打算将 rpc 远程调用的知识 ...
- 提交响应后无法调用sendredirect_微服务的那些事(三),微服务的远程调用方式。RPC和HTTP...
2.远程调用方式 无论是微服务还是SOA,都面临着服务间的远程调用.那么服务间的远程调用方式有哪些呢? 常见的远程调用方式有以下几种: RPC:Remote Produce Call远程过程调用,类似 ...
- 实现远程调用_微服务的那些事(三),微服务的远程调用方式。RPC和HTTP
2.远程调用方式 无论是微服务还是SOA,都面临着服务间的远程调用.那么服务间的远程调用方式有哪些呢? 常见的远程调用方式有以下几种: RPC:Remote Produce Call远程过程调用,类似 ...
- springboot整合rpc远程调用_SpringCloud—RPC远程调用
Eureka介绍 Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能,Spring Cloud Eureka提供服务端与客户端,服务端即是E ...
最新文章
- 张正友平面标定法的一些注意事项
- 计算机试题高考作文阅卷组对考生,2017年广东高考评卷收尾
- 几个阿里, 美团,腾讯大佬的公众号!超级变态!
- Java堆和栈的一些区别。。。
- eclipse+ADT下android开发AVD若干问题
- git 修改分支名字_大牛总结的 Git 使用技巧,写得太好了!
- Java设计模式6:策略模式
- 【转】DCMTK开源库的学习笔记4:利用ini配置文件对dcm影像进行归档
- 【CodeForces - 722C】Destroying Array(并查集,时光倒流)
- jq之slideDown() stop()
- 谷歌火狐等浏览器Flash安装失败,安装后进入网站仍提示未安装Flash
- Unity的协程详解
- 串口发送+RAM+VGA传图
- 【数据可视化】十八年纵观十大编程语言之争,Java和C语言的榜首之战。
- ADAMS三维路面重构
- 循迹模式——红外循迹模块使用介绍
- ABP+AdminLTE+Bootstrap Table权限管理系统第五节--WBEAPI及SwaggerUI
- 南大通用8a产品工具orato8a
- 数据库原理及应用实验报告-实验10-触发器
- python微信抢红包神器_快过年啦,还怕手速慢,我用Python自动抢红包!