直接调用

直接调用,则是不使用任何代理,直接Call RPC,使用比较简单。

【TCP协议】

  1. static void JsonRpcClientInvokeByTcp()
  2. {
  3. JsonRpcClient jsonRpcClient = new JsonRpcClient();
  4. jsonRpcClient.Setup(new RRQMConfig()
  5. .SetRemoteIPHost("127.0.0.1:7705")
  6. .SetJRPT(JRPT.Tcp));
  7. jsonRpcClient.Connect();
  8. Console.WriteLine("连接成功");
  9. string result = jsonRpcClient.Invoke<string>("server/testjsonrpc", InvokeOption.WaitInvoke, "RRQM");
  10. Console.WriteLine($"Tcp返回结果:{result}");
  11. JObject obj = new JObject();
  12. obj.Add("A", "A");
  13. obj.Add("B", 10);
  14. obj.Add("C", 100.1);
  15. JObject newObj = jsonRpcClient.Invoke<JObject>("server/testjobject", InvokeOption.WaitInvoke, obj);
  16. Console.WriteLine($"Tcp返回结果:{newObj}");
  17. }

【Http协议】

  1. static void JsonRpcClientInvokeByHttp()
  2. {
  3. JsonRpcClient jsonRpcClient = new JsonRpcClient();
  4. jsonRpcClient.Setup(new RRQMConfig()
  5. .SetRemoteIPHost("http://127.0.0.1:7706/jsonrpc")
  6. .SetJRPT(JRPT.Http));
  7. jsonRpcClient.Connect();
  8. Console.WriteLine("连接成功");
  9. string result = jsonRpcClient.Invoke<string>("server/testjsonrpc", InvokeOption.WaitInvoke, "RRQM");
  10. Console.WriteLine($"Http返回结果:{result}");
  11. JObject obj = new JObject();
  12. obj.Add("A", "A");
  13. obj.Add("B", 10);
  14. obj.Add("C", 100.1);
  15. JObject newObj = jsonRpcClient.Invoke<JObject>("server/testjobject", InvokeOption.WaitInvoke, obj);
  16. Console.WriteLine($"Http返回结果:{newObj}");
  17. }

【亦或者直接使用字符串调用】
在TCP协议时,必须以\r\n结尾。在Http协议时,以Post方式即可。

  1. {"jsonrpc": "2.0", "method": "server/testjsonrpc", "params":"RRQM", "id": 1}

代理调用RPC

代理调用的便捷在于,不用再纠结调用的参数类型正不正确,因为这些,代理工具都会替你做好。

如何生成获取代理文件?

获取代理文件详情

调用

当代理被客户端获取以后,客户端项目中会多出一个RRQMProxy的文件(或者如果是服务器生成的本地代理,则需要复制到客户端项目中),在该文件中,则包含了所有的代理方法代理类,可直接由代理类发起调用。
3、发现、调用服务 - 图1屏幕截图.png

  1. JsonRpcClient jsonRpcClient = new JsonRpcClient(JRPT.Http);
  2. jsonRpcClient.Setup("http://127.0.0.1:7706/jsonrpc");
  3. jsonRpcClient.Connect();
  4. Server server= new Server(jsonRpcClient);//Server是生成的代理类。
  5. server.TestJsonRpc("RRQM");//代理调用