zoukankan      html  css  js  c++  java
  • JSON-RPC轻量级远程调用协议介绍及使用

    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&params=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
  • 相关阅读:
    【多线程】工具类汇总
    【JVM】GC日志样例解读
    【Docker】
    XXS level5
    XXS level4
    XXS level3
    XXS level2
    SQLI DUMB SERIES-6
    SQLI DUMB SERIES-5
    XXS level1
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7058848.html
Copyright © 2011-2022 走看看