如何在 C# 中生成 .proto 文件或使用“Code First gRPC”

jjx*_*tra 16 c# protocol-buffers grpc .net-5

我想在 asp.net 核心 Web 应用程序中使用带有 .NET 的 gRPC。如何从现有的 C# 类和模型对象生成必要的 .proto 文件?我不想重新编写反映现有代码的 .proto 文件,我希望从类和模型对象自动生成 .proto 文件。

我调用这个方法来注册我的服务类。

builder.MapGrpcService<MyGrpcService>();

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

ModelObject[DataContract][DataMember]有订单属性。

这可能吗?我在网上看到的每个例子都以一个.proto文件开头。我已经在MyGrpcService类中定义了我想要的服务方法。但也许这只是落后于标准的做事方式......

像旧的 .NET 远程处理这样的东西是理想的,您可以从远程端点请求一个接口,它神奇地用于gRPC来回通信,但也许这太简单了。

pok*_*oke 14

protobuf-net.Grpc为此,您可以使用 Marc Gravell's 。在构建 gRPC 服务时拥有代码优先体验是他开始研究它的确切用例。它建立在protobuf-net已经在 C# 类型和 protobuf 之间添加序列化功能的基础上。

查看文档以了解如何开始使用该库,甚至观看 Marc 在他的演讲“Talking between Services with gRPC and Other Tricks”的以下录音之一中介绍这个主题:

我认为他实际上在 9 月份更新了 .NET Core 3.0 的发布位,所以那可能是更新程度更高的版本。

还有一些代码示例可以查看设置时的样子。

  • 但问题已经存在,我们如何从 .net 中的代码优先 grpc 创建 protobuf。供其他平台使用。 (4认同)