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();