Skip to main content

定义、发布、启动服务

定义服务

服务器端中新建一个类,继承于ServerProvider类(或实现IServerProvider),然后在该类中写公共方法,并用XmlRpc属性标签标记,如果方法有重载,需要重新指定函数键

  • 支持代理生成注释
public class Server : ServerProvider
{
[XmlRpc]
public int Sum(int a, int b)
{
return a + b;
}

[XmlRpc]
public int TestClass(MyClass myClass)
{
return myClass.A + myClass.B;
}
}

public class MyClass
{
public int A { get; set; }
public int B { get; set; }
}

创建服务解析器

服务解析器是实际的服务接收、触发、调用、反馈的实际载体,通俗来说就是通信服务器

static IRpcParser CreateXmlRpcRpcParser()
{
HttpService service = new HttpService();

service.Setup(new RRQMConfig().UsePlugin()
.SetListenIPHosts(new IPHost[] { new IPHost(7706) }))
.Start();

return service.AddPlugin<XmlRpcParserPlugin>()
.SetProxyToken("RPC")
.SetXmlRpcUrl("/xmlRpc");
}

注册、发布服务

添加解析器(添加时需要以键、值方式添加,方便后续查找),然后注册服务即可。

static void Main(string[] args)
{
RpcService rpcService = new RpcService();

//添加解析器,解析器根据传输协议,序列化方式的不同,调用RPC服务
rpcService.AddRpcParser("xmlRpcParser ", CreateXmlRpcRpcParser());

//注册当前程序集的所有服务
rpcService.RegisterAllServer();

//分享代理,代理文件可通过RRQMTool远程获取。
rpcService.ShareProxy(new IPHost(8848));

//或者直接本地导出代理文件。
//RpcProxyInfo proxyInfo = rpcService.GetProxyInfo(RpcType.RRQMRPC, "RPC");
//string codeString = CodeGenerator.ConvertToCode("RRQMProxy", proxyInfo.Codes);

Console.WriteLine("服务器已启动");
Console.ReadKey();

}