Как мне создать .proto файлы или использовать Code First gRPC из классов C #? - PullRequest
3 голосов
/ 08 ноября 2019

Я хочу использовать gRPC с .NET core 3 в основном веб-приложении asp.net. Как мне сгенерировать необходимый файл .proto из существующего класса C # и объектов модели? Я не хочу переписывать файл .proto, который отражает существующий код, я хочу, чтобы файл .proto генерировался автоматически из объектов класса и модели.

Я вызываю этот метод для регистрации моегокласс обслуживания.

builder.MapGrpcService<MyGrpcService>();

public class MyGrpcService
{
    public Task<string> ServiceMethod(ModelObject model, ServerCallContext context)
    {
        return Task.FromResult("It Worked");
    }
}

ModelObject имеет [DataContract] и [DataMember] с атрибутами заказа.

Возможно ли это? Каждый пример, который я вижу в сети, начинается с файла .proto. Я уже определил желаемые методы обслуживания в классе MyGrpcService. Но, возможно, это просто обратный путь к тому, что является стандартным способом ведения дел ...

Что-то вроде старого удаленного взаимодействия .NET было бы идеальным, когда вы можете просто запросить интерфейс из удаленной конечной точки, и это волшебным образом. использует gRPC для связи назад и вперед, но, возможно, это слишком упрощенное представление.

1 Ответ

1 голос
/ 08 ноября 2019

Для этого вы можете использовать protobuf-net.Grpc Марка Гравелла. Опыт создания кода при создании сервисов gRPC - это именно тот случай, когда он начал работать над ним. Он основан на protobuf-net, который уже добавляет возможности сериализации между типами C # и protobuf. * ​​1007 *

Изучите документацию , чтобы узнать, как начать работу с библиотекой. или даже смотреть, как Марк представляет эту тему в одной из следующих записей своего выступления «Разговор между службами с gRPC и другими хитростями»:

Я думаю, что он на самом деле обновил тот, что был выпущен в сентябре для выпуска .NETCore 3.0, так что, вероятно, это будет более обновленная версия.

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

...