dotnet中使用gRPC

dotnet简介

dotnet也就是.NET,是一个跨平台的框架

在Linux板上安装dotnet

对于arm64架构的板,需要下载对应的arm64版本的二进制文件,下载地址dotnet 8.0
把文件导入到linux后,解压,修改.bashrc, 加入如下两行

1
2
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

logout后重新载入终端,或source .bashrc,使修改生效。

确认安装成功

1
dotnet --version

在本地Windows计算机上使用Visual Studio创建gRPC server和client项目

参考开始使用gRPC服务

在运行后,位于项目文件夹/bin/Debug/net8.0文件夹内容可以全部拷贝到linux主机,在linux主机使用以下命令运行其中的xxx.dll文件, 能达到和在windows上同样的运行效果。

1
dotnet xxx.dll

在运行client的dll时报错如下
Grpc.Core.RpcException: Status(StatusCode=”Internal”, Detail=”Error starting gRPC call. HttpRequestException: The SSL connection could not be established, see inner exception. AuthenticationException: Cannot determine the frame size or a corrupted frame was received.

临时解决方案是在客户端中使用 GrpcChannel 创建不安全的 HTTP 通道:

1
2
3
4
var channel = GrpcChannel.ForAddress("http://localhost:5000", new GrpcChannelOptions
{
HttpHandler = new HttpClientHandler()
});

初步的gRPC教程使用 C# 的 gRPC 服务