.NET Core 下使用 gRPC
gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。
- https://grpc.io/docs/guides/
- https://github.com/grpc/grpc-dotnet
- https://docs.microsoft.com/zh-cn/aspnet/core/grpc
gRPC 的主要优点
- 现代高性能轻量级 RPC 框架。
- 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。
- 可用于多种语言的工具,以生成强类型服务器和客户端。
- 支持客户端、服务器和双向流式处理调用。
- 使用 Protobuf 二进制序列化减少对网络的使用。
这些优点使 gRPC 适用于
- 效率至关重要的轻量级微服务。
- 需要多种语言用于开发的 Polyglot 系统。
- 需要处理流式处理请求或响应的点对点实时服务。
gRPC 现在可以非常简单的在 .NET Core 和 ASP.NET Core 中使用,并且已经开源,它目前由微软官方 ASP.NET 项目的人员进行维护,良好的接入 .NET Core 生态。
接下来演示如何使用 gRPC,要想使用 gRPC 需要 .NET Core 3.1或者以上的SDK支持。gRPC分服务端和客户端,所以新建两个项目,一个控制台当作客户端gRPC_ClientDemo
,一个ASP.NET Core 项目当作服务端gRPC_ServerDemo
。
先将服务端搞定,添加Grpc.AspNetCore
组件
然后Startup.cs
中添加services.AddGrpc()
。
因为 gRPC 是基于 HTTP/2 来通信的,所以需要在配置文件中添加Kestrel 启用 HTTP/2 的配置。
gRPC 与传统的api是不同的,需要我们自己定义proto
文件,gRPC 使用协定优先方法进行 API 开发。 默认情况下,协议缓冲区 (protobuf) 用作接口设计语言 (IDL)。 *.proto 文件包含:
- gRPC 服务的定义。
- 在客户端与服务器之间发送的消息。
有关 protobuf 文件的语法的详细信息,可以查看官方文档 (protobuf)。
proto
文件在实际开发中肯定会有多个存在,这里有一个技巧就是将proto
文件放在一个文件夹内,然后利用Protobuf
的Link
关联即可,这样就只用维护一份proto
文件即可。
同时微软还帮我们提供了dotnet-grpc
,.NET Core 全局工具,请运行以下命令:
dotnet-grpc
可以用于将 Protobuf
引用作为 <Protobuf />
项添加到 .csproj 文件:
具体用法可以查看文档:https://docs.microsoft.com/zh-cn/aspnet/core/grpc/dotnet-grpc
在解决访问文件夹根目录添加 Proto 文件夹,新建一个hello.proto
proto文件,将其分别连接到两个项目中。
现在来开始编写hello.proto
,添加一个SayHello
方法。
然后来实现这个服务,在服务端添加一个GreeterService.cs
。
HelloService.HelloServiceBase
是proto
文件为我们自动生成的类。
调用重载方法SayHello()
,记录了一条日志然后返回客户端传进来的字段name。
在配置文件中将GreeterService
服务添加到路由管道中
支持我们服务端完成,启动服务端拿到启动地址,https://localhost:5001。
现在去客户端配置地址调用我们写的服务,在开始之前需要在客户端解决方案先引用下面几个nuget包。
启动服务端和客户端看看效果,成功发送消息和获取消息。
__EOF__

本文链接:https://www.cnblogs.com/meowv/p/13614390.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?