gRPC入門學習之旅(九)

DotNet菜园發表於2024-06-01
gRPC入門學習之旅目錄

gRPC入門學習之旅(一)

gRPC入門學習之旅(二)
gRPC入門學習之旅(三)
gRPC入門學習之旅(四)
gRPC入門學習之旅(七)

3.10、客戶端編譯生成GRPC類

1. 在“解決方案資源管理器”中,使用滑鼠左鍵選中專案名稱“Demo.Grpc.Common”,然後單擊滑鼠右鍵,在彈出的快捷選單中選擇“重新生成”選單項。

2. 在“解決方案資源管理器”中,使用滑鼠左鍵選中專案名稱“Demo.Grpc.Common,在彈出的快捷選單中選擇“在檔案資源管理器中開啟資料夾”選單項。如下圖。

3.我們開啟“檔案資源管理器”,進入到Demo.Grpc.Common\obj\Debug\ net7.0 目錄,發現此時目錄下也有與服務端一樣的4個.cs檔案,就是GRPC協議檔案對應的類檔案,如下圖所示:

3.11、gRPC服務的https呼叫

1.在服務端專案(Demo.GrpcService)中,由Visual Studio 2022在建立專案時預設配置了兩個地址,讓我們來呼叫。2個地址分別為:http://localhost:5209https://localhost:7149, gRPC客戶端會使用到這2個地址,目的是給客戶端請求請求地址,服務端將監聽這兩個埠。

2. 在Visual Studio 2022的“解決方案資源管理器”中,使用滑鼠右鍵單擊“Demo.Grpc.Client”專案名稱,在彈出選單中選擇“新增--> 類”。 在“新增新項”對話方塊中將類命名為 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.Client
{

        public class User
        {

            public string 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}");
                return JsonSerializer.Serialize(userInfo);
            }

            return string.Empty;
        }

        }

    }

4. 在Visual Studio 2022的“解決方案資源管理器”中,使用滑鼠雙擊開啟windows.xmal.cs檔案,新增如下程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
 

namespace Demo.Grpc.Client
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>

    public partial class MainWindow : Window
    {

        public MainWindow()
        {

            InitializeComponent();

        }

        private void btnGetUserInfo_Click(object sender, RoutedEventArgs e)
        {

            User usr = new User();
            txtMsg.Text = usr.GetUserInfo();

        }

    }

}

5.在Visual Studio 2022,按F5,啟動。會彈出如下圖的錯誤資訊。

6.在Visual Studio 2022中將“Demo.Grpc.Client”專案中的Protos目錄刪除。

7. 在Visual Studio 2022中將“Demo.Grpc.Client”專案中的“依賴項”中點選右鍵,在彈出選單中選擇“新增專案引用”。在彈出的“引用管理器”中選擇“Demo.Grpc.Common”,然後點選“確定”按鈕。如下圖。

8.Demo.Grpc.Client專案經過上述步驟之後,專案結構如下圖。

9.在Visual Studio 2022中按鈕 F5,或點選工具欄上的“執行”按鈕,啟動Demo.Grpc.Client應用程式。此次應用程式執行正常,出現了視窗,如下圖,點選“使用者資訊”按鈕,呼叫gRPC服務端提供的https地址就成功了。

相關文章