目录
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))
{