asp.net core grpc快速入门

ops/2024/10/25 8:17:03/

环境

.net 8
vs2022

创建 gRPC 服务器

在这里插入图片描述
在这里插入图片描述
一定要勾选Https
在这里插入图片描述
安装Nuget包

<PackageReference Include="Google.Protobuf" Version="3.28.2" />
<PackageReference Include="Grpc.AspNetCore" Version="2.66.0" />
<PackageReference Include="Grpc.Net.Client" Version="2.66.0" />
<PackageReference Include="Grpc.Tools" Version="2.66.0"><PrivateAssets>all</PrivateAssets><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

新建Protos文件夹,该文件下新建greet.proto

syntax = "proto3";service Greeter {rpc SayHello (HelloRequest) returns (HelloReply);
}message HelloRequest {string name = 1;
}message HelloReply {string message = 1;
}

添加编译

<ItemGroup><Protobuf Include="Protos\greet.proto" GrpcServices="Server" />
</ItemGroup>

新建Service文件夹,该文件夹下新建GreeterService

using Grpc.Core;namespace GrpcServer01.Service
{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){_logger.LogInformation("Saying hello to {Name}", request.Name);return Task.FromResult(new HelloReply{Message = "Hello " + request.Name});}}
}

修改Program.cs

using GrpcServer01.Service;namespace GrpcServer01
{public class Program{public static void Main(string[] args){var builder = WebApplication.CreateBuilder(args);//新增代码在这builder.Services.AddGrpc();var app = builder.Build();//新增代码在这app.MapGrpcService<GreeterService>();app.MapGet("/", () => "Hello World!");app.Run();}}
}

启动项目访问https://localhost:7006/
在这里插入图片描述
服务端创建成功

grpc_97">创建grpc客户端

在这里插入图片描述
在这里插入图片描述
安装nuget包

<ItemGroup><PackageReference Include="Google.Protobuf" Version="3.28.2" /><PackageReference Include="Grpc.Net.Client" Version="2.66.0" /><PackageReference Include="Grpc.Tools" Version="2.66.0"><PrivateAssets>all</PrivateAssets><IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets></PackageReference>
</ItemGroup>

复制服务端Protos\greet.proto到客户端

<ItemGroup><Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>

修改Program.cs

internal class Program
{static async Task Main(string[] args){using var channel = GrpcChannel.ForAddress("https://localhost:7006");var client = new Greeter.GreeterClient(channel);var reply = await client.SayHelloAsync(new HelloRequest { Name = "GreeterClient" });Console.WriteLine("Greeting: " + reply.Message);Console.WriteLine("Press any key to exit...");Console.ReadKey();}
}

客户端
在这里插入图片描述
服务端
在这里插入图片描述

参考

https://grpc.io/docs/languages/csharp/
https://blog.csdn.net/kevin_tech/article/details/120681720
https://learn.microsoft.com/zh-cn/aspnet/core/grpc/?view=aspnetcore-8.0
grpc详解
https://cloud.tencent.com/developer/article/1913513
https://protobuf.dev/overview/


http://www.ppmy.cn/ops/117935.html

相关文章

【PAM】Linux登录认证限制

PAM&#xff08;Pluggable Authentication Modules&#xff0c;可插拔认证模块&#xff09;是一种灵活的认证框架&#xff0c;用于在 Linux 和其他类 Unix 系统上管理用户的身份验证。PAM 允许系统管理员通过配置不同的认证模块来定制应用程序和服务的认证方式&#xff0c;而不…

将图片资源保存到服务器的盘符中

服务类 系统盘符&#xff1a;file-path.disk&#xff08;可能会变&#xff0c;配置配置文件dev中&#xff09;文件根路径&#xff1a;file-path.root-path&#xff08;可能会变&#xff0c;配置配置文件dev中&#xff09;http协议的Nginx的映射前缀&#xff1a;PrefixConstant.…

NAT和代理服务

文章目录 NAT和代理服务1、NAT技术背景2、NAT 技术 IP 转换过程3、NAPT4、NAT 技术的缺陷5、代理服务器5.1、正向代理5.1.1、概念5.1.2、工作原理5.1.3、功能特点5.1.4、应用场景 5.2、反向代理5.2.1、概念5.2.2、工作原理5.2.3、应用场景 6、NAT 和代理服务器 NAT和代理服务 …

18.2 k8s-apiserver监控源码解读

本节重点介绍 : k8s代码库和模块地址 下载 apiserver源码 apiserver中监控源码阅读 k8s源码地址分布 k8s代码库 访问github上k8s仓库&#xff0c;readme中给出了k8s 模块的代码地址举例图片 组件仓库列表 地址 Repositories currently staged here: k8s.io/apik8s.io/a…

List几种遍历方法速度

准备数据 ArrayList<Integer> list new ArrayList<Integer>();for (int i 0; i < 100000000; i) {list.add(i); }1.for循环 for (int i 0; i < list.size(); i) {Integer str list.get(i); }2.for-each循环 for (Integer vo:list) {}3.Lambda list.forEa…

Elasticsearch黑窗口启动乱码问题解决方案

问题描述 elasticsearch启动后有乱码现象 解决方案&#xff1a; 提示&#xff1a;这里填写该问题的具体解决方案&#xff1a; 到 \config 文件下找到 jvm.options 文件 打开后 在文件末尾空白处 添加 -Dfile.encodingGBK 保存后重启即可。

前端编码规范

1、开发规范 1.1、新增 view 在 /views (opens new window)文件下 创建对应的文件夹&#xff0c;一般性一个路由对应一个文件&#xff0c; 该模块下的功能就建议在本文件夹下创建一个新文件夹&#xff0c;各个功能模块维护自己的utils或components组件。 1.2、新增 api 在 /…

Redis中BigKey与MoreKey优化笔记

1.MoreKey 在Redis中&#xff0c;MoreKey问题通常指的是当数据库中的key数量非常多时&#xff0c;使用如KEYS *这样的命令去检索所有的key&#xff0c;这会导致Redis服务阻塞&#xff0c;影响正常业务。因为Redis是单线程操作的&#xff0c;执行这类命令时会占用大量时间&…