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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM