Как подойти к объектному ориентированному API с JSON-RPC?

StackOverflow https://stackoverflow.com/questions/4234753

  •  26-09-2019
  •  | 
  •  

Вопрос

У меня есть API в C #, который не будет отображать JSON-RPC из-за того, что JSON-RPC процедурно ориентирован. Как в JSON-RPC вы бы представляли объектно-ориентированные API?
Конечно, я могу использовать расширения JSON-RPC, так что запрос будет выглядеть так:

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

Но это кажется вроде взлома, а также требует много работы, чтобы определить. Я также могу включить его в качестве параметра, но опять же, просто не чувствует себя правильно.
Есть ли лучшая практика в отношении работы против ориентированного объекта API с использованием JSON-RPC?

Это было полезно?

Решение

JSON-RPC JSON Remote Процедура Вызов и по умолчанию ориентирован на процедуру.

Однако, если вы работаете над HTTP, вы можете увидеть каждую службу RPC в качестве объекта. Т.е. если вы получите доступ /foo/bar и позвонить beep через JSON-RPC через http, а затем вы звоните beep метод 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");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top