产品及架构介绍
定义
定义
一、说明
XmlRpc是通用的工作在Internet上的RPC。一个XML-RPC 消息就是一个请求体为xml的http-post请求,被调用的方法在服务器端执行并将执行结果以xml格式编码后返回。这与编程语言无关,与操作系统无 关。在此处封装了前后端,使其使用更加方便、高效。
二、特点:
- 异常反馈 。
- 支持自定义类型。
- 支持类型嵌套。
- 支持Web等调用。
三、创建服务
3.1 定义服务
在服务器端中新建一个类,继承于RpcServer类(或实现IRpcServer),然后在该类中写公共方法,并用XmlRpc属性标签标记。
public partial class XmlServer : RpcServer
{
[XmlRpc(true)]
public int Sum(int a, int b)
{
return a + b;
}
[XmlRpc(true)]
public int TestClass(MyClass myClass)
{
return myClass.A + myClass.B;
}
}
public class MyClass
{
public int A { get; set; }
public int B { get; set; }
}
3.2 启动服务
更多注册Rpc的方法请看注册Rpc服务
var service = new HttpService();
await service.SetupAsync(new TouchSocketConfig()
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
a.AddRpcStore(store =>
{
store.RegisterServer<XmlServer>();
//下列为生成客户端的代理代码
File.WriteAllText("../../../RpcProxy.cs", store.GetProxyCodes("RpcProxy", new Type[] { typeof(XmlRpcAttribute) }));
ConsoleLogger.Default.Info("成功生成代理");
});
})
.ConfigurePlugins(a =>
{
a.UseXmlRpc()
.SetXmlRpcUrl("/xmlRpc");
})
.SetListenIPHosts(7789));
await service.StartAsync();
service.Logger.Info("服务器已启动");