.Net6 WebAPI 手动开启gRPC服务

news/2024/11/8 22:59:58/

文章目录

  • .Net6 WebAPI 手动开启gRPC服务
    • 引用包
    • 开启服务
    • 配置gRPC通道
    • 完整代码
  • 总结
    • 新建一个Service.cs类,继承自生成的类后,重写处理方法(如果没有生成就先编译一下工程文件)
    • 必须重写proto中定义的所有方法

.Net6 WebAPI 手动开启gRPC服务

引用包

开启服务

  // Add services to the container.builder.Services.AddGrpc();

配置gRPC通道

 // Configure the HTTP request pipeline.app.MapGrpcService<DataReceiver>();

完整代码

 public class Program{public static void Main(string[] args){var builder = WebApplication.CreateBuilder(args);// Add services to the container. builder.Services.AddControllers();// Add services to the container.builder.Services.AddGrpc();builder.Services.AddSignalR();// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbucklebuilder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen();var app = builder.Build();// Configure the HTTP request pipeline.//if (app.Environment.IsDevelopment())//{app.UseSwagger();app.UseSwaggerUI();//}app.UseStaticFiles();app.UseHttpsRedirection();app.UseAuthorization();app.MapControllers();// Configure the HTTP request pipeline.app.MapGrpcService<DataReceiver>();app.Run();}}

以上内容完成以后,按照上一篇文章http://t.csdn.cn/M6nZV进行配置协议和服务类就可以用了。

总结

新建一个Service.cs类,继承自生成的类后,重写处理方法(如果没有生成就先编译一下工程文件)

  public class GreeterService : Greeter.GreeterBase{private readonly ILogger<GreeterService> _logger;public GreeterService(ILogger<GreeterService> logger){_logger = logger;}public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context){Console.WriteLine($"接收到请求!{request.Name}");return Task.FromResult(new HelloReply{Message = "Hello " + request.Name});}public override Task<Empty> SayBye(Empty request, ServerCallContext context){return base.SayBye(request, context);}}

注意命名空间

必须重写proto中定义的所有方法

在GreeterService 中重写所有定义的方法
否在在客户端调用服务端方法的时候,会出现异常。

再通过对源码查看以后,发现所有的异常都是在自动生成代码中生成的,因为在自动生成的代码中所有的方法都抛出了一个异常,而没有写实现内容。

其实这样做不是一个好的方式,生成的工具可以考虑生成一个抽象类,定义所有方法是抽象方法,这样用户在继承后,IDE就会提示错误,不用等到调用时才知道错了。


http://www.ppmy.cn/news/484318.html

相关文章

Linux基础服务1——Openssh

文章目录 一、基本简介二、登录示例2.1 当前用户登录2.2 指定用户登录 三、ssh主机密钥四、ssh免密登录五、服务端配置文件5.1 连接端口号5.2 限制只能使用普通用户登录5.3 密钥登录 六、SSH安全注意事项 一、基本简介 常见远程登录工具&#xff1a; telnet&#xff0c;认证明文…

汇川MD500主控板资料

原理图PCB图BOM 欢迎大家一起学习 链接&#xff1a;https://pan.baidu.com/s/1jSUonZusru8LUz10O0QEdQ?pwdgeid 提取码&#xff1a;geid

如何查看自己的分区是固态还是机械

第一步 点击管理 第二步 点击磁盘管理 第三步 查看自己之前的分区 ps:因为一般系统是装在固态的&#xff0c;所以和系统一起的就是装在固态里&#xff0c;其余的就是装在机械盘里了。&#xff08;有其他情况除外&#xff09;

数据库服务器到底是用机械硬盘还是固态硬盘

数据库服务器到底是用机械硬盘还是固态硬盘 答案是&#xff1a;固态硬盘 //1.固态硬盘已经便宜了//2.做了RAID5&#xff0c;之后有了数据安全保障&#xff0c;不放心的话 就做RAID1&#xff0c;更何况现在都是数据库集群&#xff0c;所以不担心数据丢失的问题了//3.固态硬盘…

ios测试闪存用什么软件,TLC还是MLC?教你检测iPhone6闪存类型

早前我们曾报道过&#xff0c;曾有iPhone6 Plus用户反映&#xff0c;加装了700个App左右后&#xff0c;系统便会经常出现蓝屏、系统崩溃等现象。对于此现象&#xff0c;苹果官方并没有做出任何的解锁和说法&#xff0c;而据韩国媒体的报道&#xff0c;此次iPhone6/6 Plus的系统…

MLC固态硬盘,与入量是3000次P/E

固态硬盘是什么&#xff0c;固态硬盘寿命有多长 SSD泛指使用闪存芯片组成的SSD固态硬盘&#xff0c;是使用FLASH闪存颗粒作为存储单元&#xff0c;不再使用传统的机械存储方法&#xff0c;使用模拟的方式虚拟出传统 硬盘存取方式和扇区等&#xff0c;也可以简单的理解固态硬盘就…

MLC LLM - 大模型本地部署解决方案

MLC LLM 是一种通用解决方案&#xff0c;它允许将任何语言模型本地部署在各种硬件后端和本地应用程序上&#xff0c;此外还提供了一个高效的框架&#xff0c;供每个人根据自己的用例进一步优化模型性能。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 我们的使命是让…

浅谈MLC LLM(轻设备大模型)

从此&#xff0c;大模型可以在任何设备上编译运行。 「我把大语言模型下到我的 iPhone 上&#xff0c;它神奇地跑起来了&#xff01;」 还在五一假期美梦中&#xff0c;大模型领域的技术就已经发展到了这种程度。Amazing~~~ 对于陈天奇等人开源的新技术&#xff0c;大家一致的…