gRPC 与.NET 入门( 三 )


从这个文件中 , 我们可以看到 , 它包含一个Greeter服务和一个SayHello方法 。 我们可以将Greeter服务视为控制器 , 将SayHello方法视为一个动作 。 .proto文件的内容如下所示:
SayHello方法接收一个HelloRequest(这是一个消息)并返回一个HelloReply(这也是一个消息) 。
在GreeterService文件中 , 我们可以看到有一个GreeterService类 , 它继承自Greeter.GreeterBase , 后者是由.proto文件自动生成的 。
在SayHello方法中 , 我们会接收一个请求(HelloRequest)并返回一个响应(HelloReply) 。 它们也是由.proto文件自动为我们生成的 。
代码自动生成会基于.proto文件定义为我们生成所需的文件 。 gRPC在代码生成、路由和序列化方面为我们做了所有繁重的工作 。 我们所需要做的就是实现基类并覆盖方法的实现 。
接下来 , 我们尝试运行gRPC服务:
从自动生成的端点的结果中可以看到 , 我们不能像使用web浏览器作为REST的客户端那样使用gRPC 。 在这种情况下 , 我们需要创建一个gRPC客户端与服务进行通信 。 对于我们的客户端来讲 , gRPC也需要.proto文件 , 因为它是一个契约优先的RPC框架 。 目前 , 我们的web浏览器对客户端(我们并没有.proto文件)一无所知 , 所以它不知道如何处理请求 。
我们创建名为customers.proto的自定义.proto文件 。 这个文件必须要在Protos文件夹中创建 , 它的内容如下所示:
保存完上述文件之后 , 我们需要将它添加到.csproj文件中:
gRPC 与.NET 入门】现在 , 我们需要构建应用: