6

我刚开始学习 gRPC,遇到了proto 文件的问题,因为我知道这些文件定义了传入传出数据的模型。

在服务器端一切正常。服务器编译并运行良好,但客户端无法识别来自服务器的 proto 文件。使用 Visual Studio 2019,建议添加整个服务器作为参考。

在这一点上,我相信我走得太远了。在寻找解决方案时,我读到需要将其添加为服务参考,但 Visual Studio 2019 仅提供 WCF 和 Azure 服务。我是否需要将粘贴原型文件从服务器复制到客户端,因为查看其他“教程”我注意到复制粘贴到客户端、客户端和服务器的原型文件是.NET Core 3.0ASP.NET Core 3.0

4

2 回答 2

12

转到您的客户端应用程序

  • 右键单击“依赖项”>“添加连接的服务”
  • 单击“服务参考”选项卡
  • 选择“添加新的 gRPC 服务引用”

在弹出窗口中指定 .proto 文件的路径并选择要生成的类的类型 - “客户端”。现在您将拥有一个用于两个项目的 .proto 文件。

这是 Visual Studio 2019 的说明。

于 2019-11-22T12:37:58.400 回答
2

要考虑的另一件事是使用Code-First gRPC方法。

以这种方式,您可以在 C# 合同中编写 gRPC 消息和服务,如下所示:

[DataContract]
public class HelloReply
{
    [DataMember(Order = 1)]
    public string Message { get; set; }
}

[DataContract]
public class HelloRequest
{
    [DataMember(Order = 1)]
    public string Name { get; set; }
}

[ServiceContract]
public interface IGreeterService
{
    [OperationContract]
    Task<HelloReply> SayHelloAsync(HelloRequest request,
        CallContext context = default);
}

当您知道您将在 C# 中同时使用服务器和客户端时,您可以完全跳过使用 proto。

然后,如果外部系统需要它们,您可以使用protobuf-net.Grpc生成.proto文件。

于 2021-10-10T04:16:01.437 回答