.Net Framework框架下实现Grpc客户端和服务端
一、Grpc服务端
1、新建.Net Framework框架下的控制台应用程序
新建Protos文件夹
2、NuGet包下载安装
Google.Protobuf
Grpc.Core
Grpc.Tools
3、Protos文件夹下添加 MyTestGrpc.proto文件
syntax = "proto3"; package MyTest; option csharp_namespace = "MyGrpcServer"; service MyGrpc{ rpc TestSay(TestRequest) returns (TestReply); } message TestRequest{ string name = 1; } message TestReply{ string msg = 1; }
4、项目目录下运行cmd命令
输入命令 packages\Grpc.Tools.2.39.1\tools\windows_x64\protoc.exe -I GrpcServer --csharp_out GrpcServer GrpcServer\Protos\MyTestGrpc.proto --grpc_out GrpcServer --plugin=protoc-gen-grpc=packages\Grpc.Tools.2.39.1\tools\windows_x64\grpc_csharp_plugin.exe
5、生成Grpc相关文件
6、修改Program.cs文件
class Program { private const int port = 6002; static void Main(string[] args) { Server server = new Server { Services = { MyGrpc.BindService(new MyGrpcTest()) }, Ports = { new ServerPort("localhost", port, ServerCredentials.Insecure) } }; server.Start(); Console.WriteLine($"MyTestGrpc监听端口: {port}"); Console.ReadLine(); server.ShutdownAsync().Wait(); } } public class MyGrpcTest :MyGrpc.MyGrpcBase { public override Task<TestReply> TestSay(TestRequest request, ServerCallContext context) { Console.WriteLine($"用户:{request.Name}发消息了"); return Task.FromResult(new TestReply { Msg = $"Hello {request.Name}" }); } }
二、Grpc客户端
1、新建.Net Framework框架下的控制台应用程序
新建Protos文件夹
2、NuGet包下载安装
Google.Protobuf
Grpc.Core
Grpc.Tools
3、Protos文件夹下添加 MyTestGrpc.proto文件
syntax = "proto3"; package MyTest; option csharp_namespace = "MyGrpcServer"; service MyGrpc{ rpc TestSay(TestRequest) returns (TestReply); } message TestRequest{ string name = 1; } message TestReply{ string msg = 1; }
4、项目目录下运行cmd命令
输入命令 packages\Grpc.Tools.2.39.1\tools\windows_x64\protoc.exe -I GrpcClient --csharp_out GrpcClient\Protos GrpcClient\Protos\MyTestGrpc.proto --grpc_out GrpcClient\Protos --plugin=protoc-gen-grpc=packages\Grpc.Tools.2.39.1\tools\windows_x64\grpc_csharp_plugin.exe
5、生成Grpc相关文件
6、修改Program.cs文件
class Program { static void Main(string[] args) { Channel channel = new Channel("127.0.0.1:6002", ChannelCredentials.Insecure); var client = new MyGrpc.MyGrpcClient(channel); var ret = client.TestSay(new TestRequest { Name = "TestOne" }); Console.WriteLine($"{ret.Msg}"); channel.ShutdownAsync().Wait(); Console.ReadKey(); } }