如何使用JSON-RPC处理面向对象的API?

时间:2010-11-20 20:07:17

标签: json-rpc

我在C#中有一个API,它不会映射到JSON-RPC,因为JSON-RPC是面向程序的。 如何在JSON-RPC中表示面向对象的API? 我当然可以使用JSON-RPC扩展,以便请求看起来像:

{ "jsonrpc":"2.0", method:"ObjectName.Method", "params":[], "id": 1 }

但它感觉有点hackish并且还需要很多工作来定义。 我也可以把它作为参数包括在内但又感觉不对 有关使用JSON-RPC处理面向对象API的最佳实践吗?

1 个答案:

答案 0 :(得分:4)

JSON-RPC是JSON Remote 过程调用,默认情况下是面向过程的。

但是,如果您在HTTP上工作,则可以将每个RPC服务视为对象。即如果您通过HTTP访问/foo/bar并通过JSON-RPC呼叫beep,则可以调用beep foo bar对象服务的foo.bar(x1,x2) -> bar(foo,x1,x2) 方法。

否则,您可以按照过程调用映射的所有OOP的方式执行此操作:

f=new integer(0);
f.add(10);
f.add(20);
x=f.get();
delete f;

其中foo是对象的“指针”,对于RPC,它可能是对象UUID。 (这就是在某些RPCS中实际完成的方式)。

所以你打电话

client:   new("integer",0)
server:   return "23ab3cb45"
client:   add("23ab3cb45",10);
client:   add("23ab3cb45",20);
client:   get("23ab3cb45");
server:   return 30
client:   delete("23ab3cb45");

转到:

{{1}}