最近在項目中,業務上需要與Python進行交互,而Python程式用的配置文件主要是YAML,程式以命令行形式運行,前端頁面由C#通過WPF開發完成。現在需要通過C#生成YAML配置文件,並經過Python讀取和修改後,再次由C#進行讀取。在C#開發程式中,主要用的配置文件主要是XML,JSON,I... ...
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:5209
和https://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地址就成功了。