¿Cómo abordar una API orientada a objetos con JSON-RPC?
-
26-09-2019 - |
Pregunta
Tengo una API en C# que no se asignará a JSON-RPC debido al hecho de que JSON-RPC está orientado procesalmente. ¿Cómo en JSON-RPC representarías una API orientada a objetos?
Por supuesto, puedo usar las extensiones JSON-RPC para que la solicitud se vea como:
{ "jsonrpc":"2.0", method:"ObjectName.Method", "params":[], "id": 1 }
Pero se siente un poco hackish y también requiere mucho trabajo para definir. También puedo incluirlo como parámetro, pero nuevamente no se siente bien.
¿Existe una mejor práctica con respecto a trabajar contra una API orientada a objetos que usa JSON-RPC?
Solución
JSON-RPC es JSON Remote Procedimiento Llamada y, por defecto, el procedimiento orientado.
Sin embargo, si trabaja en HTTP, puede ver cada servicio RPC como objeto. Es decir, si accedes /foo/bar
y llama beep
sobre json-rpc sobre http y luego llamas beep
método de foo
servicio de bar
objeto.
De lo contrario, puede hacerlo de la forma en que todos los OOP asignaron el procedimiento llamadas:
foo.bar(x1,x2) -> bar(foo,x1,x2)
Donde foo es "puntero" al objeto, para rpc puede ser objeto uuid. (Así es como se hace realmente en algunos RPC).
Entonces llamas
f=new integer(0);
f.add(10);
f.add(20);
x=f.get();
delete f;
Va a:
client: new("integer",0)
server: return "23ab3cb45"
client: add("23ab3cb45",10);
client: add("23ab3cb45",20);
client: get("23ab3cb45");
server: return 30
client: delete("23ab3cb45");