C# 我可以重复使用GRPC连接吗?

C# 我可以重复使用GRPC连接吗?,c#,grpc,C#,Grpc,我可以通过为通道和客户端创建一个字段来重用连接,这样我就可以在多个调用中重用客户端,还是应该为每个调用创建一个新的客户端 public异步任务DoSomething() { var channel=新通道(“端点”,ChannelCredentials.unsecure); var client=new Service.ServiceClient(通道); //呼叫客户 等待channel.shutdownsync(); } 或 ctor { _通道=新通道(“端点”,ChannelCrede

我可以通过为通道和客户端创建一个字段来重用连接,这样我就可以在多个调用中重用客户端,还是应该为每个调用创建一个新的客户端

public异步任务DoSomething()
{
var channel=新通道(“端点”,ChannelCredentials.unsecure);
var client=new Service.ServiceClient(通道);
//呼叫客户
等待channel.shutdownsync();
}

ctor
{
_通道=新通道(“端点”,ChannelCredentials.unsecure);
_客户端=新服务。服务客户端(通道);
}
公共异步任务DoSomething()
{
//呼叫客户
}
公共异步任务Dispose()
{
wait_channel.shutdownsync();
}
我可以重复使用GRPC连接吗

简短的回答是“是”,你应该这样做


在我看来,重新使用客户端。最佳实践是维护这些连接,因为它们在创建新连接时可能会有开销,而不是同时维护当前实例。我能预见的唯一问题是,您是否会遇到流限制,这也受到您可以拥有的并发流数量的限制,但这是非常多的,可能不是您的情况。

我怀疑这种做法是重复使用“连接”,比如使用TCP/HTTP“keepalive”。尽管如此,这很可能是一个好的实践,但它不是您正在重用的“连接”。