如何从C#类生成.proto文件或使用“代码优先gRPC”?

我想在ASP.NET Core Web应用程序中将gRPC与.NET Core 3一起使用。如何从现有的C#类和模型对象生成必要的.proto文件?我不想重新编写一个镜像现有代码的.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来回通信,但这也许太简单了。

haijun110120 回答:如何从C#类生成.proto文件或使用“代码优先gRPC”?

您可以使用Marc Gravell的protobuf-net.Grpc。在构建gRPC服务时具有代码优先的经验就是他开始从事gRPC服务的确切用例。它建立在protobuf-net之上,后者已经在C#类型和protobuf之间添加了序列化功能。

查看documentation,了解如何开始使用该库,甚至观看Marc在他的演讲“使用gRPC和其他技巧在服务之间进行交流”的以下录音之一中介绍该主题:>

我认为他实际上是在9月针对.NET Core 3.0的发布版本进行了更新,因此可能是更新后的版本。

还有一些code samples,以查看设置时的外观。

本文链接:https://www.f2er.com/3137259.html

大家都在问