接入grpc

This commit is contained in:
wenyongda 2025-06-13 16:38:15 +08:00
parent 0a94ffd5f0
commit c86f9a4804
7 changed files with 152 additions and 18 deletions

5
.gitignore vendored
View File

@ -2,3 +2,8 @@
WinUINotes/bin/
WinUINotes/obj/
WinUINotes/.vshistory/
WinUINotes.sln.DotSettings.user
WinUINotes.Grpc/.vshistory/
WinUINotes.Grpc/bin/
WinUINotes.Grpc/obj/
WinUINotes.Grpc/Protos/.vshistory/

View File

@ -0,0 +1,21 @@
syntax = "proto3";
option csharp_namespace = "WinUINotes";
package greet;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply);
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings.
message HelloReply {
string message = 1;
}

View File

@ -0,0 +1,35 @@
syntax = "proto3";
option csharp_namespace = "ZR.Admin.Grpc";
package my.diary;
import "google/protobuf/timestamp.proto";
// The greeting service definition.
service MyDiary {
// Sends a greeting
rpc Edit (EditRequest) returns (EditReply);
rpc Query (QueryRequest) returns (QueryReply);
}
// The request message containing the user's name.
message EditRequest {
string content = 1;
int64 user_id = 2;
google.protobuf.Timestamp create_time = 3; // 使 snake_case
}
// The response message containing the greetings.
message EditReply {
string result_message = 1;
}
message QueryRequest {
int64 user_id = 1;
google.protobuf.Timestamp create_time = 2;
}
message QueryReply {
string content = 1;
}

View File

@ -0,0 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<RootNamespace>WinUINotes.Grpc</RootNamespace>
<RuntimeIdentifiers>win-x86;win-x64;win-arm64</RuntimeIdentifiers>
<UseWinUI>true</UseWinUI>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.31.1" />
<PackageReference Include="Grpc.Net.Client" Version="2.71.0" />
<PackageReference Include="Grpc.Tools" Version="2.72.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.4188" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250606001" />
</ItemGroup>
<ItemGroup>
<Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
<Protobuf Include="Protos\my_diary.proto" GrpcServices="Client" />
</ItemGroup>
</Project>

View File

@ -1,10 +1,12 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.14.36203.30 d17.14
VisualStudioVersion = 17.14.36203.30
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUINotes", "WinUINotes\WinUINotes.csproj", "{5F69CDC8-B184-45BA-9113-311FB706CF79}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinUINotes.Grpc", "WinUINotes.Grpc\WinUINotes.Grpc.csproj", "{A42CC243-ED38-4744-B1B5-145F6641AF44}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM64 = Debug|ARM64
@ -33,6 +35,18 @@ Global
{5F69CDC8-B184-45BA-9113-311FB706CF79}.Release|x86.ActiveCfg = Release|x86
{5F69CDC8-B184-45BA-9113-311FB706CF79}.Release|x86.Build.0 = Release|x86
{5F69CDC8-B184-45BA-9113-311FB706CF79}.Release|x86.Deploy.0 = Release|x86
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Debug|ARM64.Build.0 = Debug|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Debug|x64.ActiveCfg = Debug|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Debug|x64.Build.0 = Debug|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Debug|x86.ActiveCfg = Debug|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Debug|x86.Build.0 = Debug|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Release|ARM64.ActiveCfg = Release|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Release|ARM64.Build.0 = Release|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Release|x64.ActiveCfg = Release|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Release|x64.Build.0 = Release|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Release|x86.ActiveCfg = Release|Any CPU
{A42CC243-ED38-4744-B1B5-145F6641AF44}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -1,18 +1,10 @@
using Grpc.Net.Client;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Storage;
using Google.Protobuf.WellKnownTypes;
using ZR.Admin.Grpc;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
@ -24,6 +16,19 @@ namespace WinUINotes
/// </summary>
public sealed partial class NotePage : Page
{
private Greeter.GreeterClient _greeterClient;
private MyDiary.MyDiaryClient _myDiaryClient;
private void InitializeGrpcClient()
{
//AppContext.SetSwitch(
// "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
// 确保你的 gRPC 服务器正在运行在指定的地址和端口
var channel = GrpcChannel.ForAddress("https://localhost:8888"); // 或者你的服务器地址
_greeterClient = new Greeter.GreeterClient(channel);
_myDiaryClient = new MyDiary.MyDiaryClient(channel);
}
private StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
private StorageFile? noteFile = null;
private string fileName = "note.txt";
@ -33,14 +38,26 @@ namespace WinUINotes
InitializeComponent();
Loaded += NotePage_Loaded;
InitializeGrpcClient();
}
private async void NotePage_Loaded(object sender, RoutedEventArgs e)
{
noteFile = (StorageFile)await storageFolder.TryGetItemAsync(fileName);
if (noteFile is not null)
//noteFile = (StorageFile)await storageFolder.TryGetItemAsync(fileName);
//if (noteFile is not null)
//{
// NoteEditor.Text = await FileIO.ReadTextAsync(noteFile);
//}
var reply = await _myDiaryClient.QueryAsync(new QueryRequest
{
NoteEditor.Text = await FileIO.ReadTextAsync(noteFile);
UserId = 1L,
CreateTime = Timestamp.FromDateTime(DateTime.UtcNow)
});
if (reply != null)
{
NoteEditor.Text = reply.Content;
}
}
@ -50,7 +67,22 @@ namespace WinUINotes
{
noteFile = await storageFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
}
await FileIO.WriteTextAsync(noteFile, NoteEditor.Text);
try
{
var request = new EditRequest
{
Content = NoteEditor.Text,
UserId = 1L,
CreateTime = Timestamp.FromDateTime(DateTime.UtcNow)
};
var reply = await _myDiaryClient.EditAsync(request);
await FileIO.WriteTextAsync(noteFile, request.Content);
}
catch (Exception ex)
{
}
}
private async void DeleteButton_Click(object sender, RoutedEventArgs e)

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
@ -42,6 +42,9 @@
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.4188" />
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250606001" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WinUINotes.Grpc\WinUINotes.Grpc.csproj" />
</ItemGroup>
<ItemGroup>
<Page Update="NotePage.xaml">
<Generator>MSBuild:Compile</Generator>