gRPC在c#中的使用(服务端)

在 Visual Studio Community 中"新建项目"->"类库",名称填写"Greeter",解决方案名称填写"helloworld",如下图:

143336_JrLv_2891344.png

删除自动生成的类“class1.cs”:

155437_flIu_2891344.png

新建一个文件名称为"helloworld.proto",内容如下:

syntax = "proto3";


package helloworld;

// 服务端定义
service Greeter {
// 服务端返馈信息方法
rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// 包含用户名的请求信息
message HelloRequest {
string name = 1;
}

// 服务端响应信息
message HelloReply {
string message = 1;
}

开启"程序包管理器控制台",位置如下图:

144859_pOTU_2891344.png

使用下面命令引入gRPC包:

Install-Package Grpc
Install-Package Google.Protobuf
Install-Package Grpc.Tools

在"helloworld"目录下执行如下命令:

packages\Grpc.Tools.1.0.0\tools\windows_x64\protoc.exe -IGreeter --csharp_out Greeter  Greeter/helloworld.proto --grpc_out Greeter --plugin=protoc-gen-grpc=packages\Grpc.Tools.1.0.0\tools\windows_x64\grpc_csharp_plugin.exe

执行结果如下图:

145915_MbEh_2891344.png

右键单击项目名称“Greeter”,把自动生成的两个文件"HelloworldGrpc.cs"和"Helloworld.cs" 加入项目中:

150044_2f36_2891344.png

150315_AS1n_2891344.png

在根项目中右击添加新项目:

150807_ZBjD_2891344.png

选择“控制台应用程序”,项目名称命名为“GreeterServer”:

150949_1Jbn_2891344.png

在程序包管理器控制台把默认项目改为“GreeterServer”

151706_I3zF_2891344.png

在控制台执行如下命令导入gRPC动态库:

Install-Package Grpc

在“GreeterServer”里引入项目“Greeter”

152301_NJFL_2891344.png

 

152350_U4uj_2891344.png

在“GreeterServer”下的“Program.cs”填写如下代码:

using System;
using System.Threading.Tasks;
using Grpc.Core;
using Helloworld;

namespace GreeterServer
{
    class GreeterImpl : Greeter.GreeterBase
    {
        // 服务端RPC的SayHello操作方法
        public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
        {
            return Task.FromResult(new HelloReply { Message = "你好 " + request.Name });
        }
    }

    class Program
    {
        const int Port = 50051;

        public static void Main(string[] args)
        {
            Server server = new Server
            {
                Services = { Greeter.BindService(new GreeterImpl()) },
                Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) }
            };
            server.Start();

            Console.WriteLine("Greeter server listening on port " + Port);
            Console.WriteLine("Press any key to stop the server...");
            Console.ReadKey();

            server.ShutdownAsync().Wait();
        }
    }
}

把“GreeterServer”设为启动项目,如下图:

160527_sxJK_2891344.png

单击“启动”按钮,启动gRPC服务端:

160743_G7H9_2891344.png

结果如下图:

160834_GWNG_2891344.png

转载于:https://my.oschina.net/zhizhisoft/blog/758608

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值