基于 .NET 8.0 gRPC通讯架构设计讲解,客户端+服务端

目录

1.简要说明

2.服务端设计

2.1 服务端创建

2.2 服务端设计

2.3 服务端业务模块

3.客户端设计-控制台

4.客户端设计-Avalonia桌面程序

5.客户端设计-MAUI安卓端程序


1.简要说明

gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统

项目下载地址:https://download.csdn.net/download/rotion135/90342675

整体架构设计图

解决方案预览

2.服务端设计

2.1 服务端创建

新建项目,搜索grpc 选择下图中的项目,创建;

框架最低版本支持.NET 8.0

2.2 服务端设计

先说下几个重要的文件:

launchSettings.json  部署路径等先关信息的配置文件

appsettings.json   项目设置相关配置文件

手动添加:

      "Microsoft.AspNetCore.Hosting": "Information",
      "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information",

greet.proto  通讯交互的模型设计,以及命名空间

收发消息的接口定义等,添加完成后记得保存,重新生成一下

服务类定义,还有收发消息方法重写

寻找对应的服务以及调用的方法,用的反射的机制

参数传过来 ServerName 方法Method  以及入参 Args

从容器中寻找服务,获取到实例后,调用Method,最后返回结果

  public class GreeterService : Greeter.GreeterBase
  {
      private readonly ILogger<GreeterService> _logger;
      public GreeterService(ILogger<GreeterService> logger)
      {
          _logger = logger;
      }

      public override Task<MessageResult> SendMessage(LSRequest request, ServerCallContext context)
      {
          return GetResponse(request);
      }

      private async Task<MessageResult> GetResponse(LSRequest request)
      {
          return await Task.Run(() =>
          {
              ResponseModel response = new ResponseModel();
              try
              {
                  SendModel send = JsonConvert.DeserializeObject<SendModel>(request.Json);
                  if (send == null)
                  {
                      response.IsSuccess = false;
                      response.Message = "Request cannot be null";
                  }
                  else
                  {
                      if (string.IsNullOrEmpty(send.ServerName) || string.IsNullOrEmpty(send.Method))
                      {
                  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rotion_深

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值