我在C#中有一个API,它不会映射到JSON-RPC,因为JSON-RPC是面向程序的。 如何在JSON-RPC中表示面向对象的API? 我当然可以使用JSON-RPC扩展,以便请求看起来像:
{ "jsonrpc":"2.0", method:"ObjectName.Method", "params":[], "id": 1 }
但它感觉有点hackish并且还需要很多工作来定义。 我也可以把它作为参数包括在内但又感觉不对 有关使用JSON-RPC处理面向对象API的最佳实践吗?
答案 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}}