Skip to content
Henry edited this page Oct 12, 2019 · 1 revision

组件是基于接口的方式来描述通讯,在使用上极其方便;以下介绍一下如何使组件构建一个基于接口访问的Hello World服务。

创建控制台应

image

引用组件

image

(注意:WinForm或WPF中使用请引用BeetleX.XRPC.Clients)

定义服务接口

    public interface IHelloWorld
    {
        Task<string> Hello(string name);
    }

接口的定义需要有一个规则,就是方法的返回值必须是Task

实现接口

    [Service(typeof(IHelloWorld))]
    public class HelloWorldService : IHelloWorld
    {
        public Task<string> Hello(string name)
        {
            return $"Hello {name} {DateTime.Now}".ToTask();
        }
    }

加载RPC服务

    class Program
    {
        private static XRPCServer mXRPCServer;
        static void Main(string[] args)
        {
            mXRPCServer = new XRPCServer();
            mXRPCServer.RPCOptions.LogToConsole = true;
            mXRPCServer.ServerOptions.LogLevel = BeetleX.EventArgs.LogType.Debug;
            mXRPCServer.Register(typeof(Program).Assembly);
            mXRPCServer.Open();
            Console.Read();
        }
    }

以上服务是在所有IP9090端口提供RPC服务,如果需要修改网络配置信息可以设置ServerOptions,具体属性查看BeetleX配置。启动日志如下:

image

定义Client

            client = new XRPCClient("127.0.0.1", 9090);
            client.TimeOut = 10000;
            client.Connect();
            client.NetError = (c, e) =>
            {
                Console.WriteLine(e.Error.Message);
            };

创建代理调用

            var service = client.Create<IHelloWorld>();
            while(true)
            {
                Console.Write("enter name:");
                string name = Console.ReadLine();
                var result = await service.Hello(name);
                Console.WriteLine(result);
            }

运行效果

image