在wpf项目中实现基于Grpc.AspNetCore.Server库的grpc server功能

本文介绍了Grpc.Core库即将停止维护后,如何在wpf应用中使用Grpc.Net.Client和Grpc.AspNetCore.Server进行通信。作者详细讲解了从创建ASP.NETCoregRPC服务,到在wpf项目中作为客户端和服务器的完整流程,包括依赖管理、配置和代码示例。
摘要由CSDN通过智能技术生成

前言

1.

Grpc.Core库的维护到2024.10,之后应该是不再维护了,后续推荐使用Grpc.Net.Client和Grpc.AspNetCore.Server这两个库代替。

相关声明信息可以在此处看到,

https://grpc.io/blog/grpc-csharp-future/​grpc.io/blog/grpc-csharp-future/

2.

当前工作的项目需求是在同一个局域网的多个wpf,通过grpc进行通讯,一个wpf作为grpc server,将数据发送给不同的wpf grpc client.

3.

新的Grpc.Net.Client与旧的Grpc.Core在Client建立方面,代码区别不大,可以直接参考msdn的文档 使用 C# 的 gRPC 服务 | Microsoft Learn

// The port number must match the port of the gRPC server.

using var channel = GrpcChannel.ForAddress("https://localhost:7042");

var client = new Greeter.GreeterClient(channel);

var reply = await client.SayHelloAsync(

new HelloRequest { Name = "GreeterClient" });

Console.WriteLine("Greeting: " + reply.Message);

Console.WriteLine("Press any key to exit...");

Console.ReadKey();

4.

核心问题是,Grpc.AspNetCore.Server这个库,官方的Demo里都是基于AspNetCore这个框架实现的,没有实现宿主为wpf或者命令行项目的。

基于此,在测试了一些代码后,实现了在wpf作为宿主,实现了grpc server的功能。

主要参考了以下两篇文章

https://www.cnblogs.com/linxmouse/p/14032352.html

WPF and .NET Generic Host with .NET Core 3.0 - Laurent Kempé

内容

下面说明搭建框架流程,源码会附在文末。

1.

新建一个ASP.NET Core gRPC Service项目(非必须,主要是为了获取appsetting.json这个文件,你自己新建一个json也没问题)


2.

新建类库项目GrpcProtoClassLibrary,用于存放****.proto协议和Grpc.Tools编译的文件。
需要安装的Nuget包如图,核心库是Grpc.Tools,帮助我们自动编译生成Client和Server类,其中Grpc.Core.Api和Google.Protobuf是编译时以来的类库。


对于Test.proto文件的属性配置,因为proto文件位于单独的类库项目,Client项目和Server项目都会引用这个类库项目,所以gRPC Stub Classes属性中选择Client and Server。


3.

新建wpf项目,作为grpc client。
添加引用GrpcProtoClassLibrary项目(proto所在的类库),Nuget中添加了Grpc.Net.Client库,还有CommunityToolkit.Mvvm作为mvvm框架。

4.

新建wpf项目,作为grpc server。


此处简单说一下,
1.添加GrpcProtoClassLibrary项目引用
2.添加Nuget包,Grpc.AspNetCore.Server
3.TestBiz是用来重写GrpcServer的业务逻辑
4.appsettings.json用来配置AspNetCore项目的配置信息(在此主要用来配置ip和端口)
5.App.xaml.cs在项目启动时,实现GrpcServer的初始化。
6.GrpcServer是个xml结构的配置文件,用于管理项目引用的框架和包含的文件等信息。
7.在编辑完GrpcServer的配置文件后,可以看到项目的Frameworks中添加了Microsoft.AspNetCore.App框架。

核心是App.xaml.cs中的GrpcServer的初始化代码。

以及在GrpcServer中的xml配置信息

结尾

具体代码,可以在项目源码中找到相关参考,本文仅是抛砖引玉。
https://github.com/maoleigepu/GrpcServiceDemo
https://gitee.com/maoleigepu/GrpcServiceDemo


此外,强烈推荐Gihub上的gprc官方样例代码。
https://github.com/grpc/grpc-dotnet/tree/master/examples
里面的ReadMe也非常清晰的描述了,每个样例代码所实现的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值