Как добавить интерфейс и класс в полезную нагрузку proto 3 в gRP C коммуникации - PullRequest
1 голос
/ 18 февраля 2020

Мне нужно написать фреймворк, и есть два приложения, которые общаются с использованием gRP C. Они разделяют некоторые общие прото полезные нагрузки. Теперь проблема в том, что я хочу написать некоторый интерфейс и реализацию в этом протоконтракте proto3. Это приложение на основе c#, поэтому оба будут генерировать прототип на основе c# из файла .proto.

Есть ли любой способ добиться того же.

1 Ответ

1 голос
/ 18 февраля 2020

В необработанном выражении gRP C / .proto это service:

service MyService {
  rpc SomeMethod (SomeDtoDefinedSomewhere) returns (AnotherDtoDefinedSomewhere);
  rpc AnotherMethod (Blah) returns (Whatever);
}

Сейчас; что происходит далее зависит от инструментов, которые вы используете; protoc создаст для этого прокси-сервер клиента и заглушку сервера, а не интерфейс C#. Вы можете работать с этим «как есть» или добавить свой собственный интерфейс в качестве абстракции.

Однако protobuf- net (отдельная реализация protobuf в. NET) может работать с этим как чистый C# интерфейс через protogen. К сожалению, я еще не обновил веб-сайт с помощью твиков, чтобы фактически выдавать определения сервисов в качестве интерфейсов. Но это должно работать из капель предварительного просмотра Nuget.

...