Могу ли я повторно использовать соединения GRPC? - PullRequest
1 голос
/ 02 мая 2019

Можно ли повторно использовать соединение, указав поле для канала и клиента, чтобы я мог повторно использовать клиент для нескольких вызовов, или я должен создать нового клиента для каждого вызова?

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();
}

1 Ответ

1 голос
/ 02 мая 2019

Могу ли я повторно использовать соединения GRPC?

Краткий ответ да , и вы должны.

На мой взгляд, повторно использовать клиент,Лучшей практикой будет поддерживать эти соединения, потому что они могут иметь накладные расходы при создании новых, вместо одновременного обслуживания текущего экземпляра.Единственная проблема, которую я мог бы предвидеть, заключается в том, что вы можете столкнуться с лимитами потоков, которые также ограничены количеством одновременных потоков, которые вы можете иметь, но это очень много и, вероятно, не ваш случай.

...