Exemplo n.º 1
0
        static void RunEchoServer()
        {
            var echoDescriptor = new ServiceDescriptor
            {
                Name        = "echo",
                Description = "demo service",
                ServiceHost = "localhost",
                ServicePort = 0, //the port can be set to any
            };
            var descManager = new ServiceDescriptor
            {
                Name        = "service_manager",
                Description = "global service manager",
                ServiceHost = "localhost",
                ServicePort = 3324,
                AccessToken = "AnyClient"
            };

            using var resolver = new TcpServiceResolver(descManager, clientID: "logger_client", secretKey: "02384Je5");
            var remoteLogger = resolver.GetService <ILogger>("logger");

            var echoService = new EchoImpl();

            using var echoRunner = new TcpServiceRunner <IEcho2>(
                      service: echoService,
                      descriptor: echoDescriptor,
                      logger: remoteLogger,
                      sslCertificate: null);
            echoRunner.Start(descManager, clientID: "echo_provider", secretKey: "F*ooE3");

            echoService.WaitForStop();
            Thread.Sleep(2000); //sleep a while so that the client can release the proxy first
        }
Exemplo n.º 2
0
        static void TestEcho()
        {
            //client site code
            var descManager = new ServiceDescriptor
            {
                Name        = "service_manager",
                Description = "global service manager",
                ServiceHost = "localhost",
                ServicePort = 3324,
                AccessToken = "AnyClient"
            };

            using var resolver = new TcpServiceResolver(descManager, clientID: "logger_client", secretKey: "02384Je5");
            IServiceManager managerProxy = resolver.ServiceManager;
            var             services     = managerProxy.ListService();

            foreach (var desc in services)
            {
                Console.WriteLine(desc.ToString());
            }

            IEcho2 echoClient;

            while (true) //wait for server ready
            {
                echoClient = resolver.GetService <IEcho2>("echo");
                if (echoClient == null)
                {
                    Thread.Sleep(100);
                }
                else
                {
                    break;
                }
            }
            //sync method call
            Console.WriteLine(echoClient.SayHello("World!"));
            Console.WriteLine(echoClient.SayHi("XP!"));
            //add event handler
            echoClient.GreetingEvent += (sender, args) => { Console.WriteLine(args.Greeting); };
            echoClient.Greeting("Hello clients!");
            echoClient.Greeting2Event += OnEchoGreeting;
            echoClient.Greeting("Hello echo!");
            //callback & async method call
            echoClient.SetCallback(new Callback());
            echoClient.GreetingAsync("Hello echo async!").Wait();
            echoClient.SetCallback(null);
            echoClient.GreetingAsync("Hello echo async agin!").Wait();
            //remove event handler
            echoClient.Greeting2Event -= OnEchoGreeting;
            echoClient.Greeting("Hello echo two!");
            Console.WriteLine(echoClient.SayHelloAsync("World!").Result);
            echoClient.Stop();
        }