添加proto文件时候,弹出对话框提示:必须指定语言 ,这是vs2022 的bug,更新到最新版本解决了,跟配置无关。跟新后,再次添加proto文件,有可能添加的文件vs作为普通文件对待,需要设置一下
并且要编辑csproj文件,增加一行代码,如果存在,则不用增加。增加后生成项目,会自动生成一些服务要用基类
添加一个service类
public class LuCatService: LuCat.LuCatBase
{
private static readonly List<string> Cats = new List<string>() { "英短银渐层", "英短金渐层", "美短", "蓝猫", "狸花猫", "橘猫" };
private static readonly Random Rand = new Random(DateTime.Now.Millisecond);
public override Task<SuckingCatResult> SuckingCat(Empty request, ServerCallContext context)
{
return Task.FromResult(new SuckingCatResult()
{
Message = $"您吸了一只{Cats[Rand.Next(0, Cats.Count)]}"
});
}
}
注意:这里继承了一个基类 LuCat.LuCatBase ,这类是根据 proto 文件自动生成的
最后,在Program.cs 文件中注册服务
至此,一个grpc项目算是完成了。
grpc的服务需要客户端才能够进行测试,所以我们需要安装一个客户端工具。百度,Google了一圈,发现基本上都是用 grpcurl和grpcui,这两个基本一样。只不过grpcui带有web ui。
微软官方也是推荐使用此工具 ,参考微软官方文档 https://docs.microsoft.com/zh-cn/aspnet/core/grpc/test-tools?view=aspnetcore-6.0
github源码地址:
https://github.com/fullstorydev/grpcui
个人使用的window 系统,下载地址
https://github.com/fullstorydev/grpcui/releases
下载并解压后
地址栏里输入 cmd ,启动命令行工具。
输入以下命令查看是否有问题。如果有问题就是有问题,如果没有问题就是没有问题
grpcui -help
首先启动用你的grpc服务,必须的。
然后再 grpcui的命令行中输入以下命令,启动web ui。其中 127.0.0.1:50051 是你的grpc的服务根地址,根据你自己的来,如果你的地址使用https 方案,请将 plaintext 参数换成 insecure
grpcui -plaintext 127.0.0.1:50051
ui启动了,有可能你启动不了。如果启动不了,则参考过程2 进行配置
仅做演示
终端工具必须了解服务的 Protobuf 协定,然后才能调用它们。 有两种方法可以实现此目的:
使用 gRPC 反射会更加轻松。 gRPC 反射向应用添加了新的 gRPC 服务,客户端可以调用该服务来发现服务。
gRPC ASP.NET Core 包含 Grpc.AspNetCore.Server.Reflection 包,因此具有对 gRPC 反射的内置支持。 在应用中配置反射:
builder.Services.AddGrpc();
//这里-------------------------------------
builder.Services.AddGrpcReflection();
var app = builder.Build();
app.MapGrpcService<GreeterService>();
IWebHostEnvironment env = app.Environment;
//这里---------------------------------
if (env.IsDevelopment())
{
app.MapGrpcReflectionService();
}
原码附件 下载
本文链接:https://blog.nnwk.net/article/112
有问题请留言。版权所有,转载请在显眼位置处保留文章出处,并留下原文连接
Leave your question and I'll get back to you as soon as I see it. All rights reserved. Please keep the source and links
友情链接:
子卿全栈
全部评论