我可以通过为通道和客户端创建字段来重用连接,以便可以在多个呼叫中重用该客户端,还是应该为每个呼叫创建一个新的客户端?
public async Task DoSomething()
{
var channel = new Channel("endpoint", ChannelCredentials.Insecure);
var client = new Service.ServiceClient(channel);
// call client
await channel.ShutdownAsync();
}
或
ctor
{
_channel = new Channel("endpoint", ChannelCredentials.Insecure);
_client = new Service.ServiceClient(channel);
}
public async Task DoSomething()
{
// call _client
}
public async Task Dispose()
{
await _channel.ShutdownAsync();
}
答案 0 :(得分:1)
我可以重用GRPC连接吗?
最简单的答案是是,您应该这样做。
我认为,请重新使用客户端。最佳实践是维护这些连接,因为在创建新连接时可能会产生开销,而不是同时维护当前实例。我可以预见的唯一问题是您是否会遇到流限制,该限制也受您可以拥有的并发流数量的限制,但这是很多情况,可能不是您的情况。