Транскодирование HTTP / JSON в gRP C в .NetCore - PullRequest
3 голосов
/ 15 января 2020

Недавно я обнаружил, что существует возможность «перекодировать» сервер gRP C, чтобы он мог принимать запросы HTTP / JSON, а также запросы gRP C. Я полагаю, что это позволит пользователям использовать обычный HTTP-клиент NetCore для отправки запроса на сервер gRP C (конечно, с использованием protobuf). Я видел эту реализацию на других языках (в основном Go), но я не смог ничего увидеть о том, как это можно сделать в .NetCore и C#. У вас есть идеи, как этого достичь?

Это официальная документация Goggle по этому вопросу: https://cloud.google.com/endpoints/docs/grpc/transcoding

Большое спасибо

1 Ответ

2 голосов
/ 22 января 2020

Я думаю, что лучший способ - использовать параметры HTTP google api и настроить прокси Envoy для выполнения транскодирования.

Я получил эту работу ранее, основываясь на информации в блоге Кристофа Хестерса.

Однако развертывание немного затруднительно (особенно для Windows, что мне и нравится. Продолжение разработки).

Первый метод, который я использовал для отладки, был:

  • Запуск WSL Ubuntu / WSL 2 Ubuntu / Ubuntu VM
  • Установка docker в Linux
  • Запуск envoyproxy/envoy
  • Запуск службы gRP C вручную на хосте

Вы можете использовать docker (рабочий стол, если включен Windows) / docker - составьте более портативную установку, в которой Envoy и ваша служба будут работать как контейнеры.

В ответ на ваш вопрос я обнаружил Microsoft.AspNetCore.Grp c. HttpApi . Пока это только предварительный просмотр WIP, но, похоже, гораздо легче начать с него.

...