发现、调用服务
直接调用
直接调用,则是不使用任何代理,直接Call RPC,使用比较简单,浏览器也能直接调用实现。
【Url请求】
http://127.0.0.1:7789/ApiServer/Sum?a=10&b=20
【HttpClient调用】 WebApi的客户端和大家所熟识的有一些差距,TouchSocket的WebApi使用的是先连接,后请求的逻辑。请求时,先标记GET/POST的函数。如果是GET,则必须留空URL,如果是POST,则只写URL即可。
private static WebApiClient CreateWebApiClient()
{
WebApiClient client = new WebApiClient();
client.Setup("127.0.0.1:7789");
client.Connect();
Console.WriteLine("连接成功");
return client;
}
var client = CreateWebApiClient();
int sum1 = client.Invoke<int>("GET:/ApiServer/Sum?a={0}&b={1}", null, 10, 20);
Console.WriteLine($"Get调用成功,结果:{sum1}");
int sum2 = client.Invoke<int>("POST:/ApiServer/TestPost", null, new MyClass() { A = 10, B = 20 });
Console.WriteLine($"Post调用成功,结果:{sum2}");
代理调用RPC
代理调用的便捷在于,不用再纠结调用的参数类型正不正确,因为这些,代理工具都会替你做好。
如何生成获取代理文件?
调用
当代理被客户端获取以后,客户端项目中会多出一个RRQMProxy的文件(或者如果是服务器生成的本地代理,则需要复制到客户端项目中),在该文件中,则包含了所有的代理方法和代理类,可直接由代理类发起调用。
int sum3 = client.TestPost(new MyClass() { A = 10, B = 20 });
Console.WriteLine($"代理调用成功,结果:{sum3}");