经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » ASP.net » 查看文章
gRPC入门学习之旅(四)
来源:cnblogs  作者:DotNet菜园  时间:2024/4/1 10:28:16  对本文有异议

gRPC入门学习之旅(一)

  • 实现定义的服务

9.在“解决方案资源管理器”中,使用鼠标左键选中“Services”文件夹,然后在菜单栏上,依次选择“添加-->新建项”。

10.在“添加新项”对话框中,选择“ASP.NET Core-->代码”节点,然后选择“类”项。

11.在“名称”文本框中,输入 UserService.cs,然后选择“添加”按钮。如下图。

 

 

12.在文本编辑器打开的UserService.cs类文件,编写如下代码:

  1. using Demo.GrpcService.Protos;
  2. using Grpc.Core;
  3. namespace Demo.GrpcService.Services
  4. {
  5. public class UserInfoService : UserInfo.UserInfoBase
  6. {
  7. private readonly ILogger<GreeterService> _logger;
  8. public UserInfoService(ILogger<GreeterService> logger)
  9. {
  10. _logger = logger;
  11. }
  12. /// <summary>
  13. /// 实现了userinfo.proto协议文件中定义的GetUserInfo方法
  14. /// </summary>
  15. /// <param name="request"></param>
  16. /// <param name="context"></param>
  17. /// <returns></returns>
  18. public override Task<UserInfoResult> GetUserInfo(UserInfoRequest request, ServerCallContext context)
  19. {
  20. //return base.GetUserInfo(request, context);
  21. //返回了user.proto协议文件中GetUserInfo方法定义的响应对象:UserInfoResult
  22. return Task.FromResult(new UserInfoResult
  23. {
  24. UserName = request.UserName,
  25. Password = request.Password,
  26. Name = $"姓名:张三",
  27. Tel="18800022269",
  28. Sex=1,
  29. IsLogin=false,
  30. Age = 10,
  31. City = "成都"
  32. });
  33. }
  34. /// <summary>
  35. /// 实现了userinfo.proto协议文件中定义的Login方法
  36. /// </summary>
  37. /// <param name="request"></param>
  38. /// <param name="context"></param>
  39. /// <returns></returns>
  40. public override Task<UserInfoResult> Login(UserInfoRequest request, ServerCallContext context)
  41. {
  42. //return base.Login(request, context);
  43. if (request.UserName=="Admin" && request.Password=="111111")
  44. {
  45. //返回了user.proto协议文件定义的响应对象:UserInfoResult
  46. return Task.FromResult(new UserInfoResult
  47. {
  48. UserName = request.UserName,
  49. Name = $"姓名:张三",
  50. Tel = "18800022269",
  51. Sex = 1,
  52. IsLogin = true,
  53. Age = 10,
  54. City = "成都"
  55. });
  56. }
  57. return Task.FromResult(new UserInfoResult
  58. {
  59. IsLogin = false
  60. });
  61. }
  62. /// <summary>
  63. /// 实现了userinfo.proto协议文件中定义的Save方法
  64. /// </summary>
  65. /// <param name="request"></param>
  66. /// <param name="context"></param>
  67. /// <returns></returns>
  68. public override Task<UserInfoResult> Save(UserInfoModifyRequest request, ServerCallContext context)
  69. {
  70. //return base.Save(request,context);
  71. //返回了user.proto协议文件定义的响应对象:UserInfoResult
  72. return Task.FromResult(new UserInfoResult
  73. {
  74. UserName = request.UserName,
  75. Name = request.Name,
  76. Password = request.Password,
  77. Sex =(int)request.Sex,
  78. Age =(int)request.Age,
  79. City=request.City,
  80. Tel=request.Tel,
  81. });
  82. }
  83. }
  84. }

继承的UserInfo.UserInfoBase是UserInfo.proto协议文件生成的类文件中的。

  • 注册UserInfoService服务

13.在Visual Studio 2022中进行重新生成,编译成功之后。我们需要将新建的UserInfoService服务在启动文件中进行注册。 在“解决方案资源管理器”中,找到Program.cs文件,使用鼠标双击打开Program.cs文件,在文本编辑器中,添加一行代码。将业务服务进行注册。如下面代码中斜体的一行代码,

  1. using Demo.GrpcService.Services;
  2. var builder = WebApplication.CreateBuilder(args);
  3. // Additional configuration is required to successfully run gRPC on macOS.
  4. // For instructions on how to configure Kestrel and gRPC clients on macOS, visit https://go.microsoft.com/fwlink/?linkid=2099682
  5. // Add services to the container.
  6. builder.Services.AddGrpc();
  7. var app = builder.Build();
  8. // Configure the HTTP request pipeline.
  9. app.MapGrpcService<GreeterService>();
  10. app.MapGrpcService<UserInfoService>();
  11. app.MapGet("/", () => "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");
  12. app.Run();

 

启动服务

到此,gRPC服务端就新建配置完成了,此时我们就可以启动该项目让其运行起来。

13.在Visual Studio 2022的菜单栏上,依次选择“调试”、“开始执行(不调试)”以运行服务。 Visual Studio 会弹出一个“信任Asp.Net Core SSL证书”的提示信息。如下图。

 

14.此处建议是点击“是”。然后会打开一个控制台窗口,并显示该服务的监听端口。如下图。

15.在上图中我们发现有2个地址http://localhost:5209https://localhost:7149,如图中的两处框。这2个地址是我们在创建项目的时候,Visual Studio 2022在launchSettings.json配置文件中自动给我们配置的。gRPC客户端会使用到这2个地址,目的是给客户端请求请求地址,服务端将监听这两个端口。

 

 

原文链接:https://www.cnblogs.com/chillsrc/p/18105263

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号