一个高性能、开源的通用RPC框架
gRPC可以通过protobuf来定义接口,从而可以有更加严格的接口约束条件。
通过protobuf可以将数据序列化为二进制编码,这会大幅减少需要传输的数据量,从而大幅提高性能。
gRPC可以方便地支持流式通信
使用场景
需要对接口进行严格约束的情况
对于性能有更高的要求时
通常我们不会去单独使用gRPC,而是将gRPC作为一个部件进行使用,这是因为在生产环境,我们面对大并发的情况下,需要使用分布式系统来去处理,而gRPC并没有提供分布式系统相关的一些必要组件。而且,真正的线上服务还需要提供包括负载均衡,限流熔断,监控报警,服务注册和发现等等必要的组件
逻辑:
解决方案包含三个项目:https://yumu.lanzoui.com/iPSAtrur9ha1.Demo项目(类库);
(1)Nuget:
Grpc
Google.Protobuf
Grpc.Tools
(2)添加后缀.proto原始配置文件,并编写内容
(3)在packages 的上层目录cmd输入命令转化为CSharp的.cs类,并添加进工程.
2.Client项目(控制台);
(1)Nuget:
Grpc
Google.Protobuf
(2)添加引用Demo项目;
(3)using Grpc.Core;using GRPCDemo;编写链接调用内部方法并传参,获取返回对象;
3.Server项目(控制台);
(1)Nuget:
Grpc
Google.Protobuf
(2)添加引用Demo项目;
(3)using Grpc.Core;using GRPCDemo;创建类继承gRPC.gRPCBase并实现方法;
(4)Main中创建server对象并启动.
总结:
需要在公共的类库中创建grpc专属的.proto原始文件,并使用cmd命令转化为CSharp适用的类,client和server端口需要引用刚生成的类;然后在服务端继承类实现方法并启用,客户端创建对象并调用.
参考链接: