gRPC入门学习之旅(四)
  MYrYhn3ObP4r 2024年03月30日 60 0

gRPC入门学习之旅(一)

  • 实现定义的服务

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

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

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

 

 

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

using Demo.GrpcService.Protos; using Grpc.Core; namespace Demo.GrpcService.Services { public class UserInfoService : UserInfo.UserInfoBase { private readonly ILogger<GreeterService> _logger; public UserInfoService(ILogger<GreeterService> logger) { _logger = logger; } /// <summary>
            /// 实现了userinfo.proto协议文件中定义的GetUserInfo方法 /// </summary>
            /// <param name="request"></param>
            /// <param name="context"></param>

            /// <returns></returns>
            public override Task<UserInfoResult> GetUserInfo(UserInfoRequest request, ServerCallContext context) { //return base.GetUserInfo(request, context); //返回了user.proto协议文件中GetUserInfo方法定义的响应对象:UserInfoResult

                return Task.FromResult(new UserInfoResult { UserName = request.UserName, Password = request.Password, Name = $"姓名:张三", Tel="18800022269", Sex=1, IsLogin=false, Age =  10, City = "成都" }); } /// <summary>
        /// 实现了userinfo.proto协议文件中定义的Login方法 /// </summary>
        /// <param name="request"></param>
        /// <param name="context"></param>
        /// <returns></returns>

        public override Task<UserInfoResult> Login(UserInfoRequest request, ServerCallContext context) { //return base.Login(request, context);

            if (request.UserName=="Admin" && request.Password=="111111") { //返回了user.proto协议文件定义的响应对象:UserInfoResult
                return Task.FromResult(new UserInfoResult { UserName = request.UserName, Name = $"姓名:张三", Tel = "18800022269", Sex = 1, IsLogin = true, Age = 10, City = "成都" }); } return Task.FromResult(new UserInfoResult { IsLogin = false }); } /// <summary>
        /// 实现了userinfo.proto协议文件中定义的Save方法 /// </summary>
        /// <param name="request"></param>
        /// <param name="context"></param>
        /// <returns></returns>

        public override Task<UserInfoResult> Save(UserInfoModifyRequest request, ServerCallContext context) { //return base.Save(request,context); //返回了user.proto协议文件定义的响应对象:UserInfoResult

            return Task.FromResult(new UserInfoResult { UserName = request.UserName, Name = request.Name, Password = request.Password, Sex =(int)request.Sex, Age =(int)request.Age, City=request.City, Tel=request.Tel, }); } } }

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

  • 注册UserInfoService服务

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

using Demo.GrpcService.Services; var builder = WebApplication.CreateBuilder(args); // Additional configuration is required to successfully run gRPC on macOS. // For instructions on how to configure Kestrel and gRPC clients on macOS, visit https://go.microsoft.com/fwlink/?linkid=2099682 

// Add services to the container.
builder.Services.AddGrpc(); var app = builder.Build(); // Configure the HTTP request pipeline.
 app.MapGrpcService<GreeterService>(); app.MapGrpcService<UserInfoService>(); 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"); 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个地址,目的是给客户端请求请求地址,服务端将监听这两个端口。

 

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年03月30日 0

暂无评论

推荐阅读
  soalK0wg7taG   14天前   32   0   0 .NET
MYrYhn3ObP4r