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

gRPC入门学习之旅(六)

时间:2024-04-13 11:13:06浏览次数:26  
标签:入门 之旅 gRPC Demo System Grpc userInfo using

gRPC入门学习之旅(一) gRPC入门学习之旅(二) gRPC入门学习之旅(三) gRPC入门学习之旅(四) gRPC入门学习之旅(五)

 

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地址就成功了。

运行效果如下:

 

 

标签:入门,之旅,gRPC,Demo,System,Grpc,userInfo,using
From: https://www.cnblogs.com/chillsrc/p/18132594

相关文章

  • 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
    喜欢写Blog的人,会经历三个阶段。第一阶段,刚接触Blog,觉得很新鲜,试着选择一个免费空间来写。第二阶段,发现免费空间限制太多,就自己购买域名和空间,搭建独立博客。第三阶段,觉得独立博客的管理太麻烦,最好在保留控制权的前提下,让别人来管,自己只负责写文章。大多数Blog作......
  • flask之ssti模版注入从零到入门
    前言在学习ssti模版注入的时候,发现国内文章对于都是基于python基础之上的,对于基础代码讲的较少,而对于一些从事安全的新手师傅们,可能python只停留在写脚本上,所以上手的时候可能有点难度,毕竟不是搞pythonflask开发。就本人学习ssti而言,入手有点难度,所以特写此文,对于一些不需要深......
  • SQL SERVER 从入门到精通 第5版 第三篇 高级应用 第10章 存储过程 读书笔记
    第10章存储过程 >.存储过程概述存储过程(storedprocedure)是预编译SQL语句的集合,这些语句存储在一个名称下并作为一个单元来处理.存储过程取代了传统的逐条执行SQL语句的方式.一个存储过程中可以包含增删改查等一系列SQL语句,当这个存储过程被调用时,这些操作也......
  • GRPC - certificate error
     2024/04/1216:09:36rpcerror:code=Unavailabledesc=connectionerror:desc="transport:authenticationhandshakefailed:tls:failedtoverifycertificate:x509:cannotvalidatecertificatefor0.0.0.0becauseitdoesn'tcontainanyIP......
  • .NET Emit 入门教程:第六部分:IL 指令:7:详解 ILGenerator 指令方法:分支条件指令
    前言:经过前面几篇的学习,我们了解到指令的大概分类,如:参数加载指令,该加载指令以 Ld开头,将参数加载到栈中,以便于后续执行操作命令。参数存储指令,其指令以St开头,将栈中的数据,存储到指定的变量中,以方便后续使用。创建实例指令,其指令以New开头,用于在运行时动态生成并初始化对......
  • 系统入门课后习题1
    4.Redhat7/centos7操作系统安装图形界面文档1.安装一下XWINDOWSyumgroupinstall"XWindowSystem"2.输入图形界面安装命令yumgroupinstall-y"GNOMEDesktop"3.检查图形界面是否安装成功yumgrouplist5.CentOS、RedHat之间的区别CentosRedHat免费商业收费......
  • 【ALL】Kafka从抬脚到入门
    一、Kafka简介1.1、定义旧定义Kafka是一个分布式的基于发布/订阅模式的消息队列。新定义Kafka是一个开源的分布式事件流平台,用于数据管道、流分析、数据集成和关键任务的应用。1.2、使用场景主要用于大数据实时处理领域。缓冲:有助于控制和优化数据流经过系统的速度......
  • Asp.Net Core造轮之旅:逐步构建自己的开发框架-目录
    合集-Asp.NetCore造轮之旅:逐步构建自己的开发框架(38) 1.Asp.NetCore造轮之旅:逐步构建自己的开发框架-目录2023-07-242.asp.netcore之Startup2023-07-243.asp.netcore之依赖注入2023-07-254.asp.netcore之中间件2023-07-265.asp.netcore之Host2023-07-276.asp.net......
  • 网工入门-中小型网络系统综合实验
    一、实验要求1.网络中有3个不同部门,均可自动获取地址2.各部门可互相访问,也可访问内网服务器172.16.100.13.PC1不允许访问互联网,PC2和PC3可以访问互联网4.内网服务器对外发布的地址为64.1.1.3,互联网用户可以访问这台服务器5.内网服务器的域名是www.aaa.co......
  • 网工入门-基础操作
    路由器系统视图:system-view选择网口:interfaceGigabitEthernet0/0/1配置ip:ipaddress192.168.1.1255.255.255.0保存配置:save打开dhcp:dhcpenable选择网口:interfaceGigabitEthernet0/0/1dhcp网口:dhcpselectinterface查看路由表:displayiprouting-table修改设备名......