Como abordar uma API orientada a objeto com JSON-RPC?
-
26-09-2019 - |
Pergunta
Eu tenho uma API em C# que não mapeará para o JSON-RPC devido ao fato de o JSON-RPC ser orientado proceduralmente. Como no JSON-RPC você representaria uma API orientada a objeto?
É claro que posso usar as extensões JSON-RPC para que a solicitação fosse:
{ "jsonrpc":"2.0", method:"ObjectName.Method", "params":[], "id": 1 }
Mas parece meio hackish e também requer muito trabalho para definir. Também posso incluí -lo como um parâmetro, mas novamente não parece certo.
Existe uma prática recomendada em relação a trabalhar contra uma API orientada a objetos usando o JSON-RPC?
Solução
JSON-RPC é remoto JSON Procedimento Ligue e, por padrão, procedimento orientado.
No entanto, se você trabalha com o HTTP, poderá ver cada serviço RPC como objeto. Ou seja, se você acessar /foo/bar
e ligue beep
sobre JSON-RPC sobre HTTP e você liga beep
método de foo
serviço de bar
objeto.
Caso contrário, você poderá fazer isso da maneira que todos os OOP mapearam as chamadas de procedimento:
foo.bar(x1,x2) -> bar(foo,x1,x2)
Onde Foo é "ponteiro" para objetar, para RPC, pode ser objeto uuid. (É assim que é realmente feito em alguns RPCs).
Então você liga
f=new integer(0);
f.add(10);
f.add(20);
x=f.get();
delete f;
Vai para:
client: new("integer",0)
server: return "23ab3cb45"
client: add("23ab3cb45",10);
client: add("23ab3cb45",20);
client: get("23ab3cb45");
server: return 30
client: delete("23ab3cb45");