Стратегии для вызова службы grpc из webapi в .net Core - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть rest / web API в .Net Ядре, которое я использую в качестве службы агрегации для вызова некоторого базового gRPC services также в .Net core. Для клиента WEB API я создаю канал один раз при запуске и внедряю его там, где он мне нужен, с помощью внедрения зависимостей. Я также думаю о создании клиентов для grpc services при запуске, а затем вводить их. Является ли создание канала и клиентов при запуске правильной стратегией, или я должен создавать и закрывать канал и клиентов при каждом запросе web API? Кроме того, если создание канала один раз является правильной стратегией, как мне обеспечить, чтобы канал закрывался при завершении работы ... И служба web API/rest, и grpc services будут работать на Kubernetes Cluster как док-контейнеры.

1 Ответ

0 голосов
/ 08 мая 2018

Вы не должны создавать новый канал для каждого звонка. Предполагается, что каналы gRPC являются долгоживущими, и вы, как правило, получаете лучшую производительность и использование ресурсов, если один раз создаете канал, а затем продолжаете вызывать последующие вызовы на этом канале. Точная область, в которой вы создаете канал, зависит от вашего приложения - но создание канала только один раз при запуске приложения является одним из возможных подходов (также обратите внимание, что соединения TCP / IP создаются лениво - новое соединение не будет создано, пока вы начинаете первый звонок на этом канале).

...