gRPC入門學習之旅(十)

DotNet菜园發表於2024-06-08
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的方法 。如圖

相關文章