syntax = "proto3";
service Greeter{
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest{
string name = 1;
}
message HelloReply{
string message = 1;
}
namespace GrpcServer
{
internal class GreeterService : Greeter.GreeterBase
{
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
}
4) 启动服务
//创建服务端与客户端之间的监听ip与端口号
Server server = new Server
{
Services = { Greeter.BindService(new GreeterService()) },
Ports = { new ServerPort("localhost", 5001, ServerCredentials.Insecure) }
};
//启动服务端,等待客户端的请求
server.Start();
Console.WriteLine("Greeter server listening on port 5001");
Console.WriteLine("Press any key to stop the server...");
Console.ReadKey();
// Requests server shutdown and when there are no more calls being serviced,
// cleans up used resources. The returned task finishes when shutdown procedure
// is complete.
// It is strongly recommended to shutdown all previously created servers before exiting from the process.
server.ShutdownAsync().Wait();
//建立客户端与服务端的通信通道,此ip与端口号由服务端指定
Channel channel = new Channel("127.0.0.1:5001", ChannelCredentials.Insecure);
//创建客户端API接口实例
var client = new Greeter.GreeterClient(channel);
String user = "Richard";
//异步调用服务端的SayHello方法
var reply = await client.SayHelloAsync(new HelloRequest { Name = user });
Console.WriteLine("Greeting: " + reply.Message);
channel.ShutdownAsync().Wait();
Console.ReadKey();