protobuf- net .grp c клиент и. NET Core gRP C клиентская заводская интеграция - PullRequest
1 голос
/ 26 марта 2020

Я экспериментирую со службой gRP C и клиентом, использующим файлы Proto. Советуем использовать gRP C заводскую интеграцию клиента в. NET Core (https://docs.microsoft.com/en-us/aspnet/core/grpc/clientfactory?view=aspnetcore-3.1). Для этого вы регистрируете клиент, полученный из Grp c .Core.ClientBase, который генерируется пакетом Grp c .Tools, например:

Host.CreateDefaultBuilder(args)
    .ConfigureServices((hostContext, services) =>
    {
        services.AddGrpcClient<MyGrpcClientType>(o =>
        {
            o.Address = new Uri("https://localhost:5001");
        });
    })

Насколько я понимаю, MyGrpcClientType зарегистрирован с DI как временный клиент, то есть новый создается каждый раз, когда он вводится, но клиент интегрирован с HttpClientFactory, что позволяет повторно использовать канал, а не создавать его каждый раз.

Теперь я хотел бы использовать protobuf- net .grp c для генерации клиента из интерфейса, что, по-видимому, делается следующим образом:

GrpcClientFactory.AllowUnencryptedHttp2 = true;
using var http = GrpcChannel.ForAddress("http://localhost:10042");
var calculator = http.CreateGrpcService<ICalculator>();

Если я правильно понял, что каналы дороги для создавать, но клиенты дешевы, как мне добиться интеграции с HttpClientFactory (и, таким образом, повторного использования базового канала), используя protobuf- net .grp c? Вышеприведенное, по-видимому, создает GrpcChannel каждый раз, когда я хочу клиента, так каков правильный подход к повторному использованию каналов?

Аналогично, можно ли зарегистрировать сгенерированную службу protobuf- net .grp c класс с приведенным ниже кодом в ASP. Net Core?

endpoints.MapGrpcService<MyGrpcServiceType>();

(Пожалуйста, исправьте все недоразумения в вышеприведенном)

1 Ответ

2 голосов
/ 26 марта 2020

Обратите внимание, что вам не нужно AllowUnencryptedHttp2 - это просто, если вы не используете https, но: вы, похоже, используете https.

On "аналогично «; это должно уже сработать - единственный бит, который вам может не хватать, - это вызов services.AddCodeFirstGrpc() (обычно в Startup.cs, через ConfigureServices).

Что касается AddGrpcClient; Я должен был бы исследовать. Это не то, что я исследовал в интеграции до сих пор. Это может быть новый кусок необходим.

...