当前位置: 代码网 > it编程>编程语言>Asp.net > gRPC入门学习之旅(三)

gRPC入门学习之旅(三)

2024年05月16日 Asp.net 我要评论
gRPC是一个高性能、通用的开源远程过程调用(RPC)框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发,支持众多的开发语言,由Google开源。 gRPC 客户端和服务端可以在多种环境中运行和交互。你可以用Java创建一个 gRPC 服务端,用 Go、Python、C# 来创... ...

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个地址,目的是给客户端请求请求地址,服务端将监听这两个端口。

 

 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com