前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET Core 3.1 的REST 和gRPC 性能测试

.NET Core 3.1 的REST 和gRPC 性能测试

作者头像
张善友
发布2020-06-19 11:03:45
9410
发布2020-06-19 11:03:45
举报
文章被收录于专栏:张善友的专栏张善友的专栏

看到越南小哥 的github 上的Evaluating Performance of REST vs. gRPC , 使用的是.NET Core 3.0 , 今天我把它升级到.NET Core 3.1 同样做了一个测试,文章的结果和他的博客文章是一样的。

在8年前我写过一篇文章:WCF和ASP.NET Web API在应用上的选择。 现在是2020年了,WCF换成了gRPC, ASP.NET Web API换成了ASP.NET Core Web API, 对外提供标准化的REST服务,内部通信采用gRPC的也是新时代的.NET应用程序的一个好选择,类似于Kubernetes 架构将有效负载格式用于传输协议的方式。

我们来看下.NET Core 3.1下REST和gRPC的性能表现怎么样? 从 https://github.com/geffzhang/RESTvsGRPC 下载代码。在测试机器上安装.NET Core 3.1。

  • REST API:
代码语言:javascript
复制
 cd RESTvsGRPC\RestAPI
 dotnet run -p RestAPI.csproj -c Release
  • gRPC API:
代码语言:javascript
复制
 cd RESTvsGRPC\GrpcAPI
 dotnet run -p GrpcAPI.csproj -c Release
  • 基准项目:
代码语言:javascript
复制
 cd RESTvsGRPC\RESTvsGRPC
 dotnet run -p RESTvsGRPC.csproj -c Release

等待完成测试后,我们将会得到类似下面的结果,具体的结果依赖于你的测试机器配置,我使用Win10 的Surface Book 2上面完成的下面的测试结果:

当接口返回的数据量比较小时候,REST 的性能要比gRPC要好,当数据量变大之后gRPC的性能优势就比较明显了。 .NET Core 3的 json 进行了大量的优化, 在处理消息有效负载中的小数据时会产生巨大的差异,但是实际上,对于大数据有效负载,差异就不复存在了。总体来说 gRPC在这一领域仍然是赢家。我并不是说哪个比另一个更好。我要说的是,我们需要在您的业务案例中使用哪种协议的适当策略。我们通常在与外部世界的外部通信(例如外部服务集成,与前端的通信)中使用REST通信,内部服务之间通信采用gRPC。

参考文献:
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考文献:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档