博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSON-RPC轻量级远程调用协议介绍及使用
阅读量:7098 次
发布时间:2019-06-28

本文共 2381 字,大约阅读时间需要 7 分钟。

JSON-RPC轻量级远程调用协议介绍及使用

文件夹

 

技术简单介绍

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例如以下:

參数说明:

method : 方法名

params :调用參数。json的数组格式[], 将參数需先进行url编码,再进行base64编码

id : 调用标识符,随意值。

三、JSON-RPC总结

json-rpc是一种很轻量级的跨语言远程调用协议。实现及使用简单。

仅需几十行代码,就可以实现一个远程调用的client。方便语言扩展client的实现。

server端有php、java、python、ruby、.net等语言实现,是很不错的及轻量级的远程调用协议。

參考文档

转载地址:http://mshql.baihongyu.com/

你可能感兴趣的文章
CentOS系统启动流程
查看>>
myEclipse的Aptana studio插件安装时出现Error opening the editor.
查看>>
Mysql 知识(1)
查看>>
根据不同选择显示不同单价的逻辑
查看>>
“整个场面我Hold住!”软件测试计划
查看>>
利用SmtpClient发送邮件
查看>>
线性表练习题1
查看>>
C# 面试题大全
查看>>
「THUPC2018」赛艇 / Citing
查看>>
linux shell 命令学习(4) cut - remove sections from each line of files
查看>>
python正则提取关键字
查看>>
php 中 set_time_limit 理解
查看>>
28 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)...
查看>>
MHA切换过程:
查看>>
HanLP汉语言分析框架
查看>>
SQLite 日期操作
查看>>
热词分享
查看>>
phpcms相关
查看>>
thinkphp空控制器的处理
查看>>
Unity优化----drawcall系列
查看>>