直接调用
直接调用,则是不使用任何代理,直接Call RPC,使用比较简单。
【TCP协议】
static void JsonRpcClientInvokeByTcp(){JsonRpcClient jsonRpcClient = new JsonRpcClient();jsonRpcClient.Setup(new RRQMConfig().SetRemoteIPHost("127.0.0.1:7705").SetJRPT(JRPT.Tcp));jsonRpcClient.Connect();Console.WriteLine("连接成功");string result = jsonRpcClient.Invoke<string>("server/testjsonrpc", InvokeOption.WaitInvoke, "RRQM");Console.WriteLine($"Tcp返回结果:{result}");JObject obj = new JObject();obj.Add("A", "A");obj.Add("B", 10);obj.Add("C", 100.1);JObject newObj = jsonRpcClient.Invoke<JObject>("server/testjobject", InvokeOption.WaitInvoke, obj);Console.WriteLine($"Tcp返回结果:{newObj}");}
【Http协议】
static void JsonRpcClientInvokeByHttp(){JsonRpcClient jsonRpcClient = new JsonRpcClient();jsonRpcClient.Setup(new RRQMConfig().SetRemoteIPHost("http://127.0.0.1:7706/jsonrpc").SetJRPT(JRPT.Http));jsonRpcClient.Connect();Console.WriteLine("连接成功");string result = jsonRpcClient.Invoke<string>("server/testjsonrpc", InvokeOption.WaitInvoke, "RRQM");Console.WriteLine($"Http返回结果:{result}");JObject obj = new JObject();obj.Add("A", "A");obj.Add("B", 10);obj.Add("C", 100.1);JObject newObj = jsonRpcClient.Invoke<JObject>("server/testjobject", InvokeOption.WaitInvoke, obj);Console.WriteLine($"Http返回结果:{newObj}");}
【亦或者直接使用字符串调用】
在TCP协议时,必须以\r\n结尾。在Http协议时,以Post方式即可。
{"jsonrpc": "2.0", "method": "server/testjsonrpc", "params":"RRQM", "id": 1}
代理调用RPC
代理调用的便捷在于,不用再纠结调用的参数类型正不正确,因为这些,代理工具都会替你做好。
如何生成获取代理文件?
调用
当代理被客户端获取以后,客户端项目中会多出一个RRQMProxy的文件(或者如果是服务器生成的本地代理,则需要复制到客户端项目中),在该文件中,则包含了所有的代理方法和代理类,可直接由代理类发起调用。
屏幕截图.png
JsonRpcClient jsonRpcClient = new JsonRpcClient(JRPT.Http);jsonRpcClient.Setup("http://127.0.0.1:7706/jsonrpc");jsonRpcClient.Connect();Server server= new Server(jsonRpcClient);//Server是生成的代理类。server.TestJsonRpc("RRQM");//代理调用
