直接调用

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

  1. static void Main(string[] args)
  2. {
  3. var client = GetXmlRpcClient();
  4. //直接调用
  5. int result1 = client.Invoke<int>("Sum", InvokeOption.WaitInvoke, 10, 20);
  6. Console.WriteLine($"直接调用,返回结果:{result1}");
  7. Console.ReadKey();
  8. }
  9. static XmlRpcClient GetXmlRpcClient()
  10. {
  11. XmlRpcClient jsonRpcClient = new XmlRpcClient();
  12. jsonRpcClient.Setup("http://127.0.0.1:7706/xmlRpc");
  13. jsonRpcClient.Connect();
  14. Console.WriteLine("连接成功");
  15. return jsonRpcClient;
  16. }

【亦或者直接使用字符串调用】
在Http-Post方式即可。

  1. <?xml version="1.0"?>
  2. <methodCall>
  3. <methodName>Sum</methodName>
  4. <params>
  5. <param>
  6. <value>
  7. <i4>10</i4>
  8. </value>
  9. </param>
  10. <param>
  11. <value>
  12. <i4>20</i4>
  13. </value>
  14. </param>
  15. </params>
  16. </methodCall>

代理调用RPC

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

如何生成获取代理文件?

获取代理文件详情

调用

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

  1. static void Main(string[] args)
  2. {
  3. var client = GetXmlRpcClient();
  4. Server server = new Server(client);
  5. int result2 = server.Sum(10, 20);
  6. Console.WriteLine($"代理调用,返回结果:{result2}");
  7. Console.ReadKey();
  8. }
  9. static XmlRpcClient GetXmlRpcClient()
  10. {
  11. XmlRpcClient jsonRpcClient = new XmlRpcClient();
  12. jsonRpcClient.Setup("http://127.0.0.1:7706/xmlRpc");
  13. jsonRpcClient.Connect();
  14. Console.WriteLine("连接成功");
  15. return jsonRpcClient;
  16. }