我有一个 C# API,它不会映射到 JSON-RPC,因为 JSON-RPC 是面向过程的。在 JSON-RPC 中如何表示面向对象的 API?
我当然可以使用 JSON-RPC 扩展,这样请求将如下所示:
{ "jsonrpc":"2.0", method:"ObjectName.Method", "params":[], "id": 1 }
Run Code Online (Sandbox Code Playgroud)
但它感觉有点hackish并且还需要大量的工作来定义。我也可以将它作为参数包含在内,但同样感觉不对。
是否有关于使用 JSON-RPC 处理面向对象 API 的最佳实践?
JSON-RPC 是 JSON 远程过程调用,默认情况下是面向过程的。
但是,如果您通过 HTTP 工作,您可以将每个 RPC 服务视为对象。即,如果您通过 HTTP 访问/foo/bar和调用beepJSON-RPC,那么您将调用对象的服务beep方法。foobar
否则,您可以按照所有 OOP 映射到过程调用的方式来执行此操作:
foo.bar(x1,x2) -> bar(foo,x1,x2)
Run Code Online (Sandbox Code Playgroud)
其中 foo 是指向对象的“指针”,对于 RPC,它可能是对象 UUID。(这就是某些 RPCS 中实际完成的方式)。
所以你打电话
f=new integer(0);
f.add(10);
f.add(20);
x=f.get();
delete f;
Run Code Online (Sandbox Code Playgroud)
前往:
client: new("integer",0)
server: return "23ab3cb45"
client: add("23ab3cb45",10);
client: add("23ab3cb45",20);
client: get("23ab3cb45");
server: return 30
client: delete("23ab3cb45");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |