我想在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
来回通信,但这也许太简单了。
我发现该视频对于gRPC入门非常有帮助。
—
RobIII
是的,使用gRPC的“标准方法”是先指定.proto规范,然后使用代码生成器来创建必要的代码。
—
phuzi
感谢您的视频链接,最近几天我已经花了很长时间熟悉.proto文件和gRPC的工作原理,只是拥有大量的接口和模型对象,我希望可以使用一些自动工具...但是也许无法解决使用工具重写包装器和生成.proto文件的问题,或者无法手动编写.proto文件。
—
jjxtra
对于C#到C#互操作,protobuf-net.Grpc的AddCodeFirstGrpc是必经之路。然后,客户端可以使用protobuf-net.Grpc仅通过接口,ip和端口访问Grpc服务。如果您需要互操作的其他语言调用C#grpc服务,则可以从C#代码生成.proto,请参见stackoverflow.com/questions/1334659/…。
—
jjxtra