tnblog
首页
视频
资源
登录

grpc 在vs中的运用与proto同步

8177人阅读 2020/4/2 16:24 总访问:3475801 评论:0 收藏:0 手机
分类: grpc

  思 考 问 题


 grpc 服务器当对 proto 文件进行修改时每次都去 Copy 到本地 Client 是比较麻烦的,有没有快捷的方法解决?



GrpcServer.Web 服务器端的修改



(一)修改 Message.proto 文件,去掉原有的 salary 字段



  1. syntax = "proto3";
  2. option csharp_namespace = "GrpcServer.Web.Protos";
  3. import "Enums.proto";
  4. import "google/protobuf/timestamp.proto";
  5. message Employee {
  6. int32 id = 1;
  7. int32 no = 2;
  8. string firstName = 3;
  9. string lasterName = 4;
  10. MonthSalary monthSalary = 6;
  11. EmployeeStatus status =7;
  12. google.protobuf.Timestamp lastModfied = 8;
  13. reserved "salary";
  14. reserved 5;
  15. }
  16. message MonthSalary {
  17. float basic = 1;
  18. float bonus = 2;
  19. }
  20. message GetByNoRequest{
  21. int32 no = 1;
  22. }
  23. message EmployeeResponse{
  24. Employee employee =1;
  25. }
  26. message GetAllRequest {}
  27. message AddPhotoRequest{
  28. bytes data = 1;
  29. }
  30. message AddPhotoResponse{
  31. bool isOk = 1;
  32. }
  33. message EmployeeRequest{
  34. Employee employee = 1;
  35. }
  36. service EmployeeService{
  37. rpc GetByNo(GetByNoRequest) returns (EmployeeResponse);
  38. rpc GetAll(GetAllRequest) returns (stream EmployeeResponse);
  39. rpc AddPhoto(stream AddPhotoRequest) returns (AddPhotoResponse);
  40. rpc Save(EmployeeRequest) returns (EmployeeResponse);
  41. rpc SaveAll(stream EmployeeRequest) returns (stream EmployeeResponse);
  42. }



(二)添加 Enums.proto 文件



并对属性进行修改



  1. syntax = "proto3";
  2. option csharp_namespace = "GrpcServer.Web.Protos";
  3. enum EmployeeStatus {
  4. NORMAL = 0;
  5. ONVACATION = 1;
  6. RESIGNED = 2;
  7. RETIRED = 3;
  8. }


(三)对 InMemoryData.cs 修改


注意:在添加 时间字段 的值时,其值必须是 Utc


  1. public class InMemoryData
  2. {
  3.     public static List<Employee> Employees = new List<Employee>() {
  4.         new Employee{
  5.             Id = 1,
  6.             No = 1994,
  7.             FirstName = "Chandler",
  8.             LasterName = "Bing",
  9.             MonthSalary = new MonthSalary()
  10.             {
  11.                 Basic = 1000f,
  12.                 Bonus = 85f
  13.             },
  14.             Status = EmployeeStatus.Retired,
  15.             LastModfied = Timestamp.FromDateTime(DateTime.UtcNow)
  16.             //Salary = 2200
  17.         },
  18.         new Employee{
  19.             Id = 2,
  20.             No = 1999,
  21.             FirstName = "Rachl",
  22.             LasterName = "Green",
  23.             MonthSalary = new MonthSalary()
  24.             {
  25.                 Basic = 1000f,
  26.                 Bonus = 0f
  27.             },
  28.             Status = EmployeeStatus.Resigned,
  29.             LastModfied = Timestamp.FromDateTime(DateTime.UtcNow)
  30.             //Salary = 2400
  31.         },
  32.         new Employee{
  33.             Id = 3,
  34.             No = 2452,
  35.             FirstName = "MI",
  36.             LasterName = "UIMI",
  37.             MonthSalary = new MonthSalary()
  38.             {
  39.                 Basic = 1000f,
  40.                 Bonus = 1250.9f
  41.             },
  42.             Status = EmployeeStatus.Onvacation,
  43.             LastModfied = Timestamp.FromDateTime(DateTime.UtcNow)
  44.             //Salary = 2600
  45.         }
  46.     };
  47. }


(四)双击 GrpcServer.Web 



最后 Ctrl+S  保存


GrpcClient 客户端的修改


(一)删除 Protos 文件夹下面的所有文件



(二)添加客户端相关资源

  1.   <ItemGroup>
  2.     <PackageReference Include="Google.Protobuf" Version="3.11.4" />
  3.     <PackageReference Include="Grpc.AspNetCore" Version="2.27.0" />
  4.     <PackageReference Include="Grpc.Net.Client" Version="2.27.0" />
  5.     <PackageReference Include="Grpc.Net.ClientFactory" Version="2.27.0" />
  6.     <PackageReference Include="Grpc.Tools" Version="2.27.0">
  7.       <PrivateAssets>all</PrivateAssets>
  8.       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  9.     </PackageReference>
  10.   </ItemGroup>

(三)然后跟着我操作


注意这个时候也需要修改 Enums.proto 文件的属性哟!!!


大家这个时候自需要在服务器上修改 proto 文件即可同步到客户端



最后运行一下



感谢各位的观看!




欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

grpc 四种服务类型介绍

gRPC 有四种服务类型分别是:简单 RPC(Unary RPC)、服务端流式 RPC (Server streaming RPC)、客户端流式 RPC (Client ...

启动grpc报错:HTTP/2 over TLS is not supported on Windows 7

.net core grpc报错:NotSupportedException: HTTP/2 over TLS is not supported on Windows 7 due to missing ALPN suppor...

.net core 3.0 grpc自定义服务

服务器端新建gRPC项目右键Protos文件夹--&gt;新建一个.proto,选择协议缓冲区文件,用于描述gRPC的消息和服务名字随便取,...

.net core发布grpc项目和远程调用

发布gRPC项目的过程和其他项目一样,右键发布即可发布出来后会看到有个.exe的程序然后直接丢到服务器双击运行即可不放到iis...

.net core grpc base64上传图片文件

客户端前台&lt;div&gt; &lt;inputtype=&quot;file&quot;onchange=&quot;selectImage(this.files)&quot;accept=&quot;&quot...

.net core重写grpc的方法

第一步F12定义看继承的类里边把里边的方法复制出来把前缀删除一下,前缀太多了不太好看删除掉加个override即可,就可以很方...

grpc报错grpc - Unimplemented service

注意新建了服务需要在服务器注册,不然会报gRPC-gRPC-Unimplementedservice注意:并不是代码不报错就说明接口被启动的,因为...

grpc客户端流requestStream.Current为空的问题

gRPC客户端流requestStream.Current为空的问题流式传输不能直接获取,这样requestStream.Current会为空比如这里我们传递文...

grpc客户端流式传递多个参数

客户端流式中,想要获取数据先要执行MoveNext一下或者获取到的对象是空的,但是有些时候现在在这之前就传递参数了可以借用M...

.net core grpc 客户端流式上传图片,文件。grpc文件分段传输

html前台,完全一样:&lt;formmethod=&quot;post&quot;action=&quot;/home/UpLoadImgStream&quot;enctype=&quot;multipart/f...

发布.net core的grpc服务

发布.net core的grpc服务,很简单。把发布的文件复制到服务器后,不需要放到iis上面去了,只需要运行那个.exe文件即可

grpc简介

gRPC简介gRPC gRPC来自 Google,它是一个开源的框架;它同时也是 Cloud Native Computation基金会(CNCF的一部分,就像 Docker...

grpc protocol Buffer 消息定义

标量类型gRPC  数值型有很多种形式: double, foat, fint32, int64, uint32, uint64, sint32, sint64, fixed32, fixed 64, ...

.NetCore 3.x 与 grpc

目录 本篇文章主要讲解如下内容 一。grpc在 .Net Core 3.x 中的应用 二。grpc如何分段上传图片 代码与实现过程比较简单,...

grpc调用由于目标计算机积极拒绝,无法连接。

修改端口设置,可能是https造成的代码:publicstaticIHostBuilderCreateHostBuilder(string[]args)=&gt; Host.CreateDefau...
这一世以无限游戏为使命!
排名
2
文章
636
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术