C # Повторное использование или создание нового клиента для Grpc Unary Call - PullRequest
1 голос
/ 10 апреля 2019

Я прочитал документ и не вижу подробностей о том, что когда я делаю унарный вызов grpc-серверу, я создаю нового клиента или повторно использую его (канал, очевидно, снова его использует).В качестве кода ниже используйте SayHello или SayHello1.Спасибо.

using System;
using Grpc.Core;
using HelloWorld;

namespace GreeterClient
{
    class Program
    {
        static Greeter.GreeterClient client;
        static Channel channel;
        public static void Main(string[] args)
        {
            channel = new Channel("127.0.0.1:50051", ChannelCredentials.Insecure);
            client = new Greeter.GreeterClient(channel);

            while (true)
            {
                try
                {
                    var name = Console.ReadLine();
                    var reply = SayHello(name);
                    Console.WriteLine(reply);
                }
                catch (RpcException ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            channel.ShutdownAsync().Wait();

        }
        public static string SayHello(string name)
        {
            var reply = client.SayHello(new HelloRequest { Name = name });
            return reply.Message;
        }
        public static string SayHello1(string name)
        {
            var newClient = new Greeter.GreeterClient(channel);
            var reply = newClient.SayHello(new HelloRequest { Name = name });
            return reply.Message;
        }
    }
}

1 Ответ

1 голос
/ 11 апреля 2019

Чаще всего вы будете использовать один и тот же экземпляр класса клиента («GreeterClient» в вашем случае) для всех вызовов, которые вы делаете.Тем не менее, создание нового экземпляра «GreeterClient» (из ранее существовавшего канала) является очень дешевой операцией, поэтому создание большего количества экземпляров класса клиента (например, из-за логической структуры вашего кода) не приносит никакого вреда.

Класс канала сравнительно намного более тяжелый, и вам следует создавать новые экземпляры каналов только тогда, когда у вас есть для этого веские основания.

...