Каков рекомендуемый механизм распределения клиентов GRPC? - PullRequest
0 голосов
/ 18 октября 2018

Я создал сервер GRPC и хотел бы распространять на нем «SDK» клиентов на разных языках.

Я могу относительно легко генерировать клиентов с помощью команд proto (дляпример python):

python -m grpc_tools.protoc -I. --python_out=/tmp/python --grpc_python_out=/tmp/python MyProtoc.proto

и аналогично для java/ruby и т. д.

Этот сгенерированный код необходимо скопировать в клиентские приложения вручную.

Я скорее нетобременять моих потребителей необходимостью создавать самих созданных библиотек и интегрировать их.(особенно при добавлении новых функций в службу)

Например, в контексте python было бы удобнее запускать что-то вроде

pip install MyProtoClient

Существуют ли механизмы для упаковки сгенерированных библиотек в соответствующие канонические менеджеры пакетов (например, pip / maven / npm и т. Д.)?

Кроме того, есть ли способ вызвать службусам генерировать исходные библиотеки (или возвращать соответствующий протокол, который он реализует?)

1 Ответ

0 голосов
/ 18 октября 2018

Нет проекта, посвященного исключительно созданию пакетов для сгенерированного источника.Googleapis ' Artman / GAPIC Generator - это проект, который делает это для многих языков, но он также генерирует собственный код и смешивает их вместе.Вы можете увидеть выходные данные для некоторых языков (для всех из них посмотрите на определенный API, например, Pub / Sub).

Серверы gRPC могут предоставлять свои определения через API отражения .Существует встроенная реализация сервиса на каждом языке.Например, в Java это io.grpc.protobuf.services.ProtoReflectionService, а в Go - google.golang.org/grpc/reflection.Служба не возвращает файлы .proto, но «дескрипторы», которые являются обычным форматом, используемым средствами отражения и генерации кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...