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的方法 。如图

gRPC入门学习之旅(十)的更多相关文章
- 汇编入门学习笔记 (十二)—— int指令、port
疯狂的暑假学习之 汇编入门学习笔记 (十二)-- int指令.port 參考: <汇编语言> 王爽 第13.14章 一.int指令 1. int指令引发的中断 int n指令,相当于引 ...
- Spring学习之旅(十)--MockMvc
在之前的 Spring学习之旅(八)--SpringMVC请求参数 我们是通过在控制台输出来验证参数是否正确,但是这样做实在是太耗时间了,我们今天来学习下 MockMvc,它可以让我们不需要启动项目就 ...
- Spring学习之旅(十五)--SpringBoot
在使用 Spring 的过程中,有时候会出现一些 ClassNotFoundException 异常,这是因为 JAR 依赖之间的版本不匹配所导致的.而 Spring Boot 就能避免绝大多数依赖版 ...
- Egret入门学习日记 --- 第二十篇(书中 9.1~9.3 节 内容 组件篇)
第二十篇(书中 9.1~9.3 节 内容 组件篇) 第八章中的内容. 以上都是基本的Js知识,我就不录入了. 直接来看 第9章. 开始 9.1节. 以上内容告诉你,Egret官方舍弃了GUI,使用了E ...
- Egret入门学习日记 --- 第十九篇(书中 8.8~8.10 节 内容)
第十九篇(书中 8.8~8.10 节 内容) 开始 8.8节. 重点: 1.类型推断. 2.类型强制转换,使其拥有代码提示功能. 3.除了TS自带的类型判断,Egret官方也提供了类型判断的方法. 操 ...
- Egret入门学习日记 --- 第十八篇(书中 8.5~8.7 节 内容)
第十八篇(书中 8.5~8.7 节 内容) 其实语法篇,我感觉没必要写录入到日记里. 我也犹豫了好久,到底要不要录入. 这样,我先读一遍语法篇的所有内容,我觉得值得留下的,我就录入日记里. 不然像昨天 ...
- Egret入门学习日记 --- 第十六篇(书中 6.10~7.3节 内容)
第十六篇(书中 6.10~7.3节 内容) 昨天搞定了6.9节,今天就从6.10节开始. 其实这个蛮简单的. 这是程序员模式. 这是设计师模式. 至此,6.10节 完毕. 开始 6.11节. 有点没营 ...
- Egret入门学习日记 --- 第十五篇(书中 6.1~6.9节 内容)
第十五篇(书中 6.1~6.9节 内容) 好的,昨天完成了第五章. 今天来看第六章. 总结重点: 1.如何对组件进行分组? 跟着做: 重点1:如何对组件进行分组? 首先,选中你想要组合的组件. 然后点 ...
- Egret入门学习日记 --- 第十四篇(书中 5.4~5.6节 内容)
第十四篇(书中 5.4~5.6节 内容) 书中内容: 总结 5.4节 内容重点: 1.如何编写自定义组件? 跟着做: 重点1:如何编写自定义组件? 文中提到了重要的两点. 好,我们来试试看. 第一步, ...
- Egret入门学习日记 --- 第十二篇(书中 5.1节 内容)
第十二篇(书中 5.1节 内容) 昨天把 第4章完成了. 今天来看第5章. 接下来是 5.1节 的内容. 总结一下 5.1节 的重点: 1.如何制作一个公用按钮皮肤. 跟着做: 重点1:如何制作一个公 ...
随机推荐
- eclipse tomcat的一些错误
eclipse tomcat运行错误 错误提示: Server Tomcat v7.0 Server at localhost was unable to start within 45 second ...
- HarmonyOS NEXT应用开发案例——二级联动
介绍 本示例主要介绍了List组件实现二级联动(Cascading List)的场景. 该场景多用于短视频中拍摄风格的选择.照片编辑时的场景的选择. 效果图预览 使用说明: 滑动二级列表侧控件,一级列 ...
- 好云推荐官丨飞天加速之星怎样选择云服务器ECS?
编者按:本文来自"好云推荐官"活动的技术博主投稿,作者(昵称天狼)曾入选首届"飞天加速之星",获得飞天人气奖. 你是否还在苦苦地寻找一家合适的云厂商,寻找合 ...
- 重度使用Flutter研发模式下的页面性能优化实践
简介: 淘宝特价版是集团内应用Flutter技术场景比较多,且用户量一亿人以上的应用了.目前我们首页.详情.店铺.我的,看看短视频,及评价,设置等二级页面都在用Flutter技术搭建.一旦Flutte ...
- Flow vs Jenkins 实操对比,如何将Java应用快速发布至ECS
简介:Jenkins 由于其开源特性以及丰富插件能力,长久以来都是中小企业搭建 CICD 流程的首选.不过 Jenkins 存在维护成本高.配置复杂等缺点,云效 Flow 较好地解决了这些问题. 本 ...
- 技术揭秘:从双11看实时数仓Hologres高可用设计与实践
简介:本文将会从阿里巴巴双11场景出发,分析实时数仓面临的高可用挑战以及针对性设计. 2021年阿里巴巴双11完美落下为帷幕,对消费者来说是一场购物盛宴,对背后的业务支撑技术人来说,更是一场年度大考 ...
- Region-区域
定义Region的方式有两种: 一种是在XAML定义 RegionManager.RegionName(XAML) 一.View代码 1 <Viewbox Grid.Column="1 ...
- Centos下虚拟环境的创建以及python3安装
1.python3自己安装 ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3 ln -s /usr/local/python3/bin/p ...
- dockerfile构建镜像常用命令
一.什么是dockerfile Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成映像. docke ...
- 日志服务 HarmonyOS NEXT 日志采集最佳实践
背景信息 随着数字化新时代的全面展开以及 5G 与物联网(IoT)技术的迅速普及,操作系统正面临前所未有的变革需求.在这个背景下,华为公司自主研发的鸿蒙操作系统(HarmonyOS)应运而生,旨在满足 ...