Использование альтернативного канала связи / транспорта для GRPC - PullRequest
0 голосов
/ 11 марта 2020

В настоящее время у меня есть примитивная настройка RP C, основанная на JSON, передаваемой через защищенные сокеты, но я бы хотел перейти на gRP C. К сожалению, мне также нужен доступ к AF_ UNIX на windows (который Microsoft недавно начала поддерживать, но gRP C не реализована).

Поскольку у меня уже есть работающее соединение (управляемое другой библиотекой), я бы предпочел просто использовать его вместе с GRP C для отправки / получения команд вместо моего JSON анализа, но я изо всех сил пытаюсь определить лучший способ сделать это.

Я видел Подключение пользовательского транспорта в gRP C, но этот вопрос отличается в следующих отношениях (Как и моя надежда для более свежего ответа)

  1. Я хочу избежать внесения изменений в ядро ​​gRP C. Я бы предпочел расширить его, если это возможно, из моей библиотеки, но ответ здесь подразумевает добавление нового транспорта в gRP C. Если мне нужно было сделать это на транспортном уровне, есть ли механизм, чтобы зарегистрировать его в gRP C после того, как ядро ​​было построено?
  2. Я не уверен, нужно ли мне определять это как полный пользовательский транспорт, так как у меня уже установлено и готово существующее соединение. Я видел некоторые вещи, которые подразумевают, что я мог бы просто расширить Канал, но я могу ошибаться.
  3. Мне нужно иметь возможность поддерживать Windows или, по крайней мере, его современные версии (что означает, что опции from_fd, предоставляемые gRP C, недоступны, поскольку в настоящее время они реализованы только для POSIX)

Кто-нибудь решал подобные проблемы с gRP C?

1 Ответ

0 голосов
/ 12 марта 2020

Возможно, я понял свой ответ. Кажется, я был слишком сосредоточен на gRP C, когда компонент определения сервиса Protobuf не зависит от этого.

Как я могу написать свой собственный RP C Реализация для протокольных буферов, использующих ZeroMQ , очень похожа на мой вариант использования, с https://developers.google.com/protocol-buffers/docs/proto#services, похоже, для разрешения моего проблема (и это также объясняет, почему я, похоже, перепутал различные виды «каналов»)

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

...