代码之家  ›  专栏  ›  技术社区  ›  the_drow

如何用JSON-RPC实现面向对象的API?

  •  1
  • the_drow  · 技术社区  · 14 年前

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

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

    但这感觉有点老套,还需要很多工作来定义。 我也可以把它作为一个参数,但同样的,它感觉不对。
    关于使用JSON-RPC处理面向对象的API,是否有最佳实践?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Artyom    14 年前

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

    但是,如果您在HTTP上工作,则可以将每个RPC服务视为对象。即,如果您访问 /foo/bar 打电话来 beep 通过JSON-RPC通过HTTP,然后调用 嘟嘟 方法 foo 服务 bar 反对。

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

    foo.bar(x1,x2) -> bar(foo,x1,x2) 
    

    其中foo是指向对象的“指针”,对于RPC,它可能是对象UUID。(这就是在一些rpc中的实际实现方式)。

    所以你打电话来

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

    转到:

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