【发布时间】:2020-03-05 04:39:01
【问题描述】:
我想在 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");
}
}
ModelObject 具有带有订单属性的 [DataContract] 和 [DataMember]。
这可能吗?我在网上看到的每个示例都以.proto 文件开头。我已经在MyGrpcService 类中定义了我想要的服务方法。但也许这只是倒退到标准的做事方式......
像旧的 .NET 远程处理这样的东西是理想的,你可以从远程端点请求一个接口,它神奇地使用 gRPC 来回通信,但也许这太简单了。
【问题讨论】:
-
我发现this video 对 gRPC 入门很有帮助。
-
是的,gRPC 的“标准做事方式”是先指定 .proto 规范,然后使用代码生成器创建必要的代码。
-
感谢视频链接,最近几天我已经熟悉了 .proto 文件和 gRPC 的工作原理,只是有大量的接口和模型对象,我希望能得到一些使用自动工具...但也许无法绕过重写包装器并使用工具生成 .proto 文件,或者无法手动编写 .proto 文件。
-
对于 C# 到 C# 互操作,来自 protobuf-net.Grpc 的 AddCodeFirstGrpc 是要走的路。然后,客户端可以使用 protobuf-net.Grpc 仅通过接口、ip 和端口访问 Grpc 服务。如果您需要调用 C# grpc 服务的其他语言的互操作,您可以从 C# 代码生成 .proto,请参阅stackoverflow.com/questions/1334659/…。
-
我能再问一件事吗?客户端代码是什么样的?提前致谢
标签: c# protocol-buffers grpc .net-5