JSON-RPC-Java学习之JSON-RPC specifications

来源:互联网 发布:new balance淘宝官方店 编辑:程序博客网 时间:2024/04/29 04:48
   这几天在学习JSON-RPC协议,觉得其比较好用,就根据其中的英文文档作了一些笔记,以供参考。
   JSON-RPC协议是一种远程过程调用协议,其设计的目的就是为了简化处理。常规的处理机制是在两个对等
通信实体之间建立点对点的数据连接,在连接的生命周期内一方可能调用另一方提供的方法,为了调用一个远程
方法必须发送一个请求,而服务器端必须回答一个与该请求相对的响应除非这个请求是一个通知。
    1.1 request (method invocation)
        客户端通过向远程服务发送一个请求的方式来实现对远程方法的调用,而这个请求是一个由JSON协议串行
化的对象,含有下面三个属性:

        ·method:被调用方法名;

        ·params:被调用方法的参数列表;

        ·id           :请求id,可以是任何类型,用于与响应匹配。

     1.2 response

        当方法调用完成后,服务器必须给出一个响应,而这个响应也是一个有JSON协议串行化的对象,其含有三个属性:

        ·result:是一个由被调用方法返回的对象,如果错误调用方法时,则其值为null;

        ·error  :如果没有错误调用方法,则其值为null;

         ·id        :与要响应的请求的id相同。

     1.3 notification

        一个notification请求是一个没有响应的特殊的请求,其也是由JSON协议串行化的对象,含有和一般请求相同的属性,但是其id应为null。

       2.1JSON-RPC over Stream Connection

       该规范不需要特定的传输协议,而鼓励使用TCP/IP进行流的传输。任何时候都可以在传输实体间进行传送系列化的请求和响应对象,对于除了notification请求之外的所有请求,通信的另一端都要给出一个响应。一个不合法的请求或响应都会造成关闭双方的连接,而其又会在通信的每一端因为未响应的请求产生异常。

      2.2JSON-RPC over HTTP

      对HTTP作一定的修改后,其也可用于和服务进行通信。客户端可以发送一个或多个请求到服务端,所有的请求都必须作为包含所有系列化请求对象的HTTP POST对象发送,回答必须包含为所有请求的响应的系列化响应对象,nofification可以由客户端或服务器端发出。

      同样,一个不合法的请求会造成连接的断开,一个不合法的响应也会在客户端为所有未回答的请求产生异常,关闭连接也会在客户端为所有未回答的请求产生异常。

      3. JSON Class hinting

        JSON对象的格式:

          {"jsonclass":["constructor",[param1,],"prop1":...]}

         

原创粉丝点击