[鶴城杯 2021]easy_crypto [強網擬態 2021]擬態簽到題 [SWPUCTF 2021 新生賽]crypto8[SWPUCTF 2021 新生賽]crypto7[SWPUCTF 2021 新生賽]crypto6[SWPUCTF 2021 新生賽]ez_caesar[SWPUCTF ...
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的方法 。如圖