您的位置:首页 > 编程语言 > C#

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

2016-10-14 16:09 211 查看
在 Visual Studio Community 中"新建项目"->"类库",名称填写"Greeter",解决方案名称填写"helloworld",如下图:



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



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

syntax = "proto3";

package helloworld;

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

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

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

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



使用下面命令引入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

执行结果如下图:



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





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



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



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



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

Install-Package Grpc

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





在“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”设为启动项目,如下图:



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



结果如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐