0

我正在创建一个 grpc 客户端-服务器项目。对于每个客户,我想实例化一个不同的对象:

我的客户类看起来像:

static void Main(string[] args)
{
            Channel channel = new Channel("localhost", 5001,SslCredentials.Insecure);

            var client = new Greeter.GreeterClient(channel);
            var client2 = new Greeter.GreeterClient(channel);

            String user = "Alice";
            String user2 = "Bob";

            var reply = client.putName(new HelloRequest { Name = user });
            Console.WriteLine(reply.Message);
            var reply2 = client2.putName(new HelloRequest { Name = user2 });
            Console.WriteLine(reply2.Message);

            reply = client.getName();
            Console.WriteLine(reply.Message);
            reply2 = client2.getName();
            Console.WriteLine(reply2.Message);

            reply = client.modifyName(new HelloRequest { Name = "Frank" });
            Console.WriteLine(reply.Message);
            reply2 = client2.modifyName(new HelloRequest { Name = "Russel" });
            Console.WriteLine(reply2.Message);
}
public class GreeterService : Greeter.GreeterBase
{
    private IName n;
    private readonly ILogger<GreeterService> _logger;
    public GreeterService(ILogger<GreeterService> logger,IName n)
    {
        this.n = n;
        _logger = logger;
    }
    public override Task<HelloReply> putName(HelloRequest request, ServerCallContext context)
    {
        n.SetName(request.Name);
        return Task.FromResult(new HelloReply
            {
                Message = "User changed"
            });
    }

    public override Task<HelloReply> getName(HelloRequest request, ServerCallContext context)
    {
        return Task.FromResult(new HelloReply
        {
            Message = this.name
        });
    }
    public override Task<HelloReply> modifyName(HelloRequest request, ServerCallContext context)
    {
        string new_name= n.SetName(request.Name);
        return Task.FromResult(new HelloReply
            {
                Message = "Hello " + new_name
            });
    }
}

我还在Startup.csservices.AddSingleton<IName>(new Name("name"));中添加了ConfigureServices方法。

运行我的客户端的结果是:

> User changed
> User changed
> Bob
> Bob
> Hello Frank
> Hello Russel

相反,我希望服务器保留每个Name对象的实例以及结果输出:

> User changed
> User changed
> Alice
> Bob
> Hello Frank
> Hello Russel

这可能使用 gRPC 吗?

4

0 回答 0