首页 > 其他分享 >gRPC入门学习之旅(四)

gRPC入门学习之旅(四)

时间:2024-03-30 11:34:06浏览次数:20  
标签:UserName Task return 入门 之旅 proto gRPC request

gRPC入门学习之旅(一)

gRPC入门学习之旅(二) 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个地址,目的是给客户端请求请求地址,服务端将监听这两个端口。

 

 

标签:UserName,Task,return,入门,之旅,proto,gRPC,request
From: https://www.cnblogs.com/chillsrc/p/18105263

相关文章

  • gRPC框架
    读了songguojun大佬的一篇文章gRPC框架详解,总结一下关于gRPC的知识点RPC是什么RPC是远程调用,是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议,简单的理解就是一个节点请求另一个节点提供的服务。RPC只是一套协议,基于这套协议规范来实现的框架称为RPC框架......
  • Kotlin项目入门
    KoTest官方使用文档对于kotlin项目的测试使用koTest首先要安装KoTest插件,然后gradle引入插件testImplementation("io.kotest:kotest-runner-junit5:5.7.2")testImplementation("io.kotest:kotest-runner-junit5-jvm:5.7.2")代码使用方式:classMainTest:FunSpec({......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-2 zk会话重连机制
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12718 1重点关注1.1本节内容验证了使用sessionid和sessionPassword重连的session和之前的session一致,详见3.1   2课程内容2.1扩展之:echodump|nclocalhost2181......
  • 【Python】如何入门 Python:系统化方法与实践路径
    目录前言一、基础知识打牢基础二、选择合适的学习工具三、实践项目加深理解四、深入学习高级主题五、探索数据科学与机器学习六、加入社区与协作七、持续学习与跟进最新动态总结前言    在当今这个数据驱动的时代,Python作为一门强大、易学且应用广泛的编......
  • 【HTML】HTML入门:构建网页的基础
    前言    HTML(HyperTextMarkupLanguage)是构建网页和应用的基础。它提供了一种结构化的方式来组织内容,使得网页设计师可以创建出丰富且具有交互性的网页。本指南将带你从零开始学习HTML,包括它的基本概念、常用标签、属性以及如何构建一个简单的网页。第一部分:HTML基......
  • VScode记笔记贴心入门(Markdown)
    文章目录VScode记笔记零基础教程(Markdown)作者:closer一、准备工作1.下载VScode2.注意点二、创建文件1.第一步插件安装2.人生第一个文件的创建三、Markdowm常用语法四、图片插入1.最简单的就是直接本地图片拖进来,完全的ok啊~2.图床操作五、导出PDF六、结语......
  • 【好书推荐3】Python网络爬虫入门到实战
    【好书推荐3】Python网络爬虫入门到实战写在最前面内容简介作者简介目录前言/序言......
  • 【人工智能入门必看的最全Python编程实战(6)】
    ---------------------------------------------------------------------1.AIGC未来发展前景未完持续…1.1人工智能相关科研重要性拥有一篇人工智能科研论文及专利软著竞赛是保研考研留学深造以及找工作的关键门票!!!拥有一篇人工智能科研论文及专利软著竞赛是保研考研......
  • 深度学习-入门理解
    一.什么是深度学习    深度学习这个术语于2006年被正式提出,它是一种人工智能领域的机器学习方法,最初就是为了解决基于传统的机器学习方法在处理复杂数据时所遇到的一些限制提出的:传统的机器学习方法在处理高维度、非线性和大规模数据时往往表现不佳,因为它们需要手动设......
  • 状态机入门实践
    状态机是“有限状态自动机”的简称,是一种描述和处理事物状态变化的数学模型。本质上来讲,就是一种比if...else结构更加优雅,并具备可扩展性的状态转移处理机制。有多种实现方案,如:枚举,SpringStatemachine,colastatemachine。枚举状态机通过在枚举中定义方法来实现状态转移,状态定......