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

gRPC入门学习之旅(十)

时间:2024-06-08 10:54:46浏览次数:14  
标签:入门 之旅 UserIoc gRPC System using

gRPC入门学习之旅目录  gRPC入门学习之旅(一) gRPC入门学习之旅(二) gRPC入门学习之旅(三) gRPC入门学习之旅(四) gRPC入门学习之旅(七)  gRPC入门学习之旅(九)

3.12、依赖注入方式调用gRPC

1. 在Visual Studio 2022的解决方案资源管理器中,使用鼠标右键单击“Command”文件夹,在弹出菜单中选择“添加--> 类”,在弹出的“添加新项”对话框中,选择添加 “UserIoc.cs”类,这是一个我们要实现的依赖注入的类,然后选择“添加”。

2. 在Visual Studio 2022的解决方案资源管理器中,使用鼠标双击打开“UserIoc.cs”文件,并添加如下具体代码。

using Demo.GrpcService.Protos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

namespace Demo.Grpc.Client
{
    internal class UserIoc
    {

        /// <summary>
        /// 定义gRPC客户端服务对象
        /// </summary>

        private readonly UserInfo.UserInfoClient _userClient;

        public UserIoc(UserInfo.UserInfoClient userClient)

        {

            _userClient = userClient;
        }

        public string GetUserInfo()
        {
            var userInfo = _userClient.GetUserInfo(new UserInfoRequest()
            {

                UserName="IocTest",
                Password = "GRPC 依赖注入调用方式- IOC"

            });

            return JsonSerializer.Serialize(userInfo);

        }
}

}

 

 

3. 在MainWindows.xmal文件中添加一个Buttion控件,并使用鼠标双击这个按钮,在MainWindows.xmal.cs文件中添加一个btnIocTestUserInfo_Click事件,具体代码如下:

<Button x:Name="btnIocTestUserInfo" Grid.Column="2" Grid.Row="0" Content="Ioc用户信息" Click="btnIocTestUserInfo_Click"></Button>

4.在MainWindows.xmal.cs文件的btnIocTestUserInfo_Click事件中,添加依赖注入的代码。具体代码如下:

        private void btnIocTestUserInfo_Click(object sender, RoutedEventArgs e)
        {
            #region 使用IOC注入的方式调用gRPC
            IServiceCollection services = new ServiceCollection();

 
            //注册UserIoc服务
            services.AddTransient<UserIoc>();

            #region gRPC Client注册

            //调用http时启用该设置
            //AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
            //添加gRPC客户端服务
            services.AddGrpcClient<UserInfo.UserInfoClient>(options =>
            {
                //设置gRPC的https服务调用地址
                options.Address = new Uri("https://localhost:7149");

            }).ConfigureChannel(grpcOptions =>
            {
            });
            #endregion
            //构建容器
            IServiceProvider serviceProvider = services.BuildServiceProvider();
            //解析UserIoc服务

            var grpcRequestTest = serviceProvider.GetService<UserIoc>();
            //调用UserIoc服务中的GetUserInfo方法

           txtMsg.Text= grpcRequestTest.GetUserInfo();
            #endregion
        }

5.新开一个Visual Studio 2022,打开Demo.GrpcService解决方案,并在Visual Studio 2022的解决方案资源管理器中,将Demo.GrpcService项目设为启动项目。按F5,启动。如图。

 

6.在第一个Visual Studio 2022中,我们按F5,将Grpc.Demo.Client运行起来。然后点击“Ioc用户信息”按钮,实现Ioc调用grpc的方法 。如图

 

标签:入门,之旅,UserIoc,gRPC,System,using
From: https://www.cnblogs.com/chillsrc/p/18238421

相关文章

  • C++入门 初始化列表 & 隐式类型转换
    目录初始化列表构造函数体赋值初始化列表格式初始化列表特性每个成员变量在初始化列表中只能出现一次类中以下成员必须初始化尽量使用初始化列表初始化数组初始化 声明次序就是初始化顺序多参数初始化列表再谈隐式类型转换拷贝引用explicit关键字定义用法缺......
  • cocos入门6:向量简介
    在CocosCreator的游戏开发中,向量(Vector)是一个非常重要的概念。向量不仅用于表示二维或三维空间中的位置、方向和速度,还广泛应用于各种物理计算、碰撞检测、动画控制等场景。本教程将深入讲解CocosCreator中的向量概念、使用方法和一些高级应用。一、向量的基本概念1......
  • cocos入门7:向量的应用举例
    在CocosCreator中,我们可以使用JavaScript或TypeScript来编写代码,实现向量点乘的计算,并应用于角色移动、动画控制等场景中。以下是一些具体的代码示例:1.计算两个向量之间的点乘首先,我们需要一个函数来计算两个向量的点乘。在CocosCreator中,我们可以使用cc.Vec2来表示二......
  • 【启程Golang之旅】让文件操作变得简单
    欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了解这门语言的基础知识和实用技巧。目录初识文件IO的引入读取文件写入文件文件复制......
  • 酱酒香气术语入门:八个关键词让你接近品酒师的水平
    虽然酱酒的香气专业词汇没有葡萄酒的那么丰富,但对于许多初学者来说,初次接触时仍可能感到惊讶。今天酱酒亮哥向大家介绍一下酱香中的头香、主体香、尾香等术语,这些都是品酒师常用的术语。掌握了这8个香气术语,你就能更接近品酒师的水平了!头香:也称为顶香,是最初嗅闻到的产品特征香......
  • 【数据结构】图论入门
    引入数据的逻辑结构:集合:数据元素间除“同属于一个集合”外,无其他关系线性结构:一个对多个,例如:线性表、栈、队列树形结构:一个对多个,例如:树图形结构:多个对多个,例如:图图的基本概念及术语图:G=(V,E)V:顶点(数据元素)的有穷非空集合E:边的有穷集合图的类型定义无向图:每......
  • C语言入门分析
    C语言是一门面向过程的高级语言,既有接近底层的特性,也有高级的语法。所谓C生万物,C语言自1972年诞生以来,一直都被业界所认可。而其它的一些曾经流行的编程语言如:COBOL、Pascal、Fortran等已经被基本不被使用了。但C语言却历久弥新,到现在为止,C语言在编程界的地位还是如此重要。那......
  • c++入门笔记——头文件
    【头文件】c++中,一个程序开头必有头文件。头文件有许多个,它们的关系是并列的。<algorithm>:包含STL通用算法。<bitset>:包含bitset类模板。<cassert>:包含断言宏,如assert。<cctype>:包含字符处理函数。<cerrno>:定义错误码变量errno。<cfenv>:提供有关浮点环境的操作。......
  • 限流器设计思路(浅入门)
    目录令牌桶算法(TokenBucket)漏桶算法(LeakyBucket)滑动窗口(SlidingWindow)总结限流器(RateLimiter)是一种用于控制系统资源利用率和质量的重要机制。它通过限制单位时间内可以执行的操作数量,从而防止系统过载和保护服务的可靠性。在程序设计中,可以使用多种方式来实现限流......
  • 超详细!新手入门PMP®考试指南,收藏起来备考更高效​!
    回复数字“6”,查看PMP考试过关口诀无论你是刚刚踏入项目管理领域的新手,对于PMP®考试充满好奇与期待;还是已经在职场中摸爬滚打多年,希望通过PMP®认证来进一步提升自己的项目管理能力和职业竞争力。相信这份指南都会为你提供宝贵的报考信息和备考策略01PMP®考试简介PMP®......