Я хочу использовать 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
для связи назад и вперед, но, возможно, это слишком упрощенное представление.
источник
Ответы:
Вы можете использовать Марк Гравелл
protobuf-net.Grpc
для этого. Опыт создания кода при создании сервисов gRPC - это именно тот случай, когда он начал работать над ним. Он основан на том,protobuf-net
что уже добавляет возможности сериализации между типами C # и protobuf.Ознакомьтесь с документацией, чтобы узнать, как начать использовать библиотеку, или даже посмотрите, как Марк представил эту тему в одной из следующих записей своего выступления «Разговор между службами с gRPC и другими приемами»:
Я думаю, что он на самом деле обновил выпущенный в сентябре выпуск .NET Core 3.0, так что это, вероятно, будет более обновленная версия.
Есть также несколько примеров кода, чтобы увидеть, как это выглядит при настройке.
источник