Quero usar o gRPC com o .NET core 3 em um aplicativo da web principal do asp.net. Como eu gero o arquivo .proto necessário a partir de uma classe C # existente e objetos de modelo? Não quero reescrever um arquivo .proto que espelha o código existente, quero que o arquivo .proto seja gerado automaticamente a partir dos objetos de classe e modelo.
Eu chamo esse método para registrar minha classe de serviço.
builder.MapGrpcService<MyGrpcService>();
public class MyGrpcService
{
public Task<string> ServiceMethod(ModelObject model, ServerCallContext context)
{
return Task.FromResult("It Worked");
}
}
ModelObject
possui [DataContract]
e [DataMember]
com atributos de pedido.
Isso é possível? Cada exemplo que vejo online começa com um .proto
arquivo. Eu já defini meus métodos de serviço desejados na MyGrpcService
classe. Mas talvez isso seja apenas o contrário da maneira padrão de fazer as coisas ...
Algo parecido com o antigo sistema de comunicação remota do .NET seria ideal onde você pode simplesmente solicitar uma interface a partir de um ponto de extremidade remoto e ele magicamente usa gRPC
para se comunicar, mas talvez essa seja uma visão muito simplista.
fonte
Respostas:
Você pode usar Marc Gravell
protobuf-net.Grpc
para isso. Ter uma experiência de primeiro código ao criar serviços de gRPC é o caso de uso exato do motivo pelo qual ele começou a trabalhar nele. Ele é desenvolvido sobre oprotobuf-net
qual já adiciona recursos de serialização entre tipos de C # e protobuf.Confira a documentação para ver como começar a usar a biblioteca ou assista a Marc apresentar este tópico em uma das seguintes gravações de sua palestra “Conversando entre serviços com gRPC e outros truques”:
Eu acho que ele realmente atualizou o de setembro para os bits de lançamento do .NET Core 3.0, então essa provavelmente seria a versão mais atualizada.
Existem também alguns exemplos de código para ver como isso ocorre quando você o configura.
fonte