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

gRPC入门学习之旅(五)

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

 

3.3、客户端编译生成grpc类

1. 在“解决方案资源管理器”中,使用鼠标左键选中项目名称“demo.grpc.cmd”,然后单击鼠标右键,在弹出的快捷菜单中选择“重新生成”菜单项。

2. 在“解决方案资源管理器”中,使用鼠标左键选中项目名称“demo.grpc.cmd,在弹出的快捷菜单中选择“在文件资源管理器中打开文件夹”菜单项。如下图。

 

3.我们打开“文件资源管理器”,进入到demo.grpc.cmd\obj\debug\ net7.0目录,发现此时目录下也有与服务端一样的4个.cs文件,就是grpc协议文件对应的类文件,如下图所示:

 

3.4、grpc服务的https调用

1.在服务端项目(demo.grpcservice)中,由visual studio 2022在创建项目时默认配置了两个地址,让我们来调用。2个地址分别为:http://localhost:5209https://localhost:7149, grpc客户端会使用到这2个地址,目的是给客户端请求请求地址,服务端将监听这两个端口。

2. 在visual studio 2022的“解决方案资源管理器”中,使用鼠标右键单击“demo.grpc.cmd”项目名称,在弹出菜单中选择“添加--> 类”。 在“添加新项”对话框中将类命名为 user,然后选择“添加”。

3. 在visual studio 2022的“解决方案资源管理器”中,使用鼠标双击打开刚才创建的user.cs文件,添加如下代码:

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.text.json;
using system.threading.tasks;
using grpc.net.client;
using demo.grpcservice.protos;

namespace demo.grpc.cmd
{
 
    public class user

    {

        public void getuserinfo()
        {

            // 使用https
            const string urlhttps = "https://localhost:7149";

            using (var channel = grpcchannel.foraddress(urlhttps))
            {

                var client = new userinfo.userinfoclient(channel);

                userinforesult userinfo = client.getuserinfo(new userinforequest()
                {
                    username = "admin",

                    password = "12345"

                });

                //打印服务方法返回的结果
                console.writeline($"{userinfo.username},{userinfo.age},{userinfo.name}");
                console.writeline( jsonserializer.serialize(userinfo));
            }

           // return string.empty;
           console.readkey();

        }
    }
}

4. 在visual studio 2022的“解决方案资源管理器”中,使用鼠标双击打开program.cs文件,添加如下代码:

/ 、see https://aka.ms/new-console-template for more information

using demo.grpc.cmd;


console.writeline("hello, world!"); 

new user().getuserinfo();

5.我们在开启一个visual studio 2022,打开“demo.grpcservice”解决方案,将“demo.grpcservice”设置为启动项目,并使用https协议启动运行。

 

6.启动运行之后的结果如图。

 

7.我们切换到“demo.grpc.cmd”为启动项目visual studio 2022,按f5,启动。

 

8.启动之后的运行结果,如图。

 

到此,调用grpc服务端提供的https地址就成功了。

3.5、grpc服务的http调用

相比https的调用,我们只需要在调用前加上如下代码即可:

 

appcontext.setswitch("system.net.http.socketshttphandler.http2unencryptedsupport", true);

1. 在visual studio 2022的“解决方案资源管理器”中,使用鼠标双击打开user.cs文件,添加如下代码:

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.text.json;
using system.threading.tasks;
using grpc.net.client;
using demo.grpcservice.protos;

namespace demo.grpc.cmd
{
    public class user
    {

        public void getuserinfo()
        {
            //使用http
            appcontext.setswitch("system.net.http.socketshttphandler.http2unencryptedsupport", true);
            const string urlhttp = "http://localhost:5209";
 
            using (var channel = grpcchannel.foraddress(urlhttp))
                // 使用https
               // const string urlhttps = "https://localhost:7149";
           // using (var channel = grpcchannel.foraddress(urlhttps))
            {

                var client = new userinfo.userinfoclient(channel);

                userinforesult userinfo = client.getuserinfo(new userinforequest()
                {
                    username = "admin",
                    password = "12345"

                });


                //打印服务方法返回的结果
                console.writeline($"{userinfo.username},{userinfo.age},{userinfo.name}");
                console.writeline( jsonserializer.serialize(userinfo));
            }

           // return string.empty;
           console.readkey();
        }
    }
}

2.在目visual studio 2022,按f5或是点击工具栏上的“运行”按钮,启动“demo.grpc.cmd”控制台程序。

 

到此,调用grpc服务端提供的http地址就成功了。

运行效果如下:

 

 

(0)

相关文章:

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

发表评论

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