.NET Core + gRPC 实现数据串流

hez2010 2019-01-19 10:37:14
最近在用 .net core 做微服务的时候遇到了需要流式传输文件数据的需求,于是自己研究了一下,基于 HTTP/2,使用 gRPC + .NET Core 2.2 写了一个文件数据流服务器,下面是具体的构建过程,我写到了博客里面供大家参考:

https://blog.csdn.net/hez2010/article/details/86556623


不得不说 .NET Core 做微服务实在是太舒服了!我个人感觉 gRPC + .NET Core 的开发效率要比我之前用 ASP.NET Core 做 RESTful WebAPI Server 高很多,而且支持很完善,可玩性更高。

欢迎大家来讨论哈哈
...全文
258 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
masanaka 2019-01-20
  • 打赏
  • 举报
回复

感谢分享,学习一下
  • 打赏
  • 举报
回复
下载二进制文件内容,.net 有标准 http get/post 的功能支持标准 http 下载,为什么用什么 WebApi 做对比呢?你应该用最初级的最基本的 asp.net 的那个下载语句做对比。 另外,下载过程中要检测客户端有没有离线,离线就应该停止下载。你的代码相比于入门书上的标准化的那几行下载语句,还是少了一个判断语句。
hez2010 2019-01-20
  • 打赏
  • 举报
回复
引用 1 楼 以专业开发人员为伍 的回复:
下载二进制文件内容,.net 有标准 http get/post 的功能支持标准 http 下载,为什么用什么 WebApi 做对比呢?你应该用最初级的最基本的 asp.net 的那个下载语句做对比。 另外,下载过程中要检测客户端有没有离线,离线就应该停止下载。你的代码相比于入门书上的标准化的那几行下载语句,还是少了一个判断语句。
这个只是做一个简单的串流演示而已,并不能直接用于正式的生产环境。 正式上线的时候是需要带上token、id等信息来确保服务可靠性的。
本门课程是带大家进入微服务领域入门的课程,很适合新手小白学习的课程。1: 什么是rpc?RPC(Remote Procedure Call)是函数对函数的远程调用,传输协议tcp,http,主要是基于xml,json序列化协议(这里的序列化协议是对数据编解码的方式),项目中我们真正用到的是grpcgrpc是一个框架,基于http2.0的长链接,性能有所改进,重要的是grpc用的是Google开源的protobuf序列化协议,它比json,xml性能更快,在压缩数据方面也更小。总之我们选择grpc最主要的有两点:1:支持跨语言开发(如python,golang,java)2:  grpc首先是一个框架,封装rpc,让程序员只关注代码逻辑即可 2: 为什么用grpc,而不用flask,django,tornado,即http协议?1:http的调用是根据url的(即restful),它跟rpc的调用最大的区别就是这里,rpc的调用,你就像调用一个本地函数一样简单,而且微服务,分布式也是从rpc开始的,学好rpc对以后做好分布式会更有帮助,其实go语言和python语言里都有rpc(如xmlrpc,jsonrpc,zerorpc),我们之所以学习go语言里的rpc是因为go语言的rpc相对更加灵活,go语言本身也支持高并发,这一点对于分布式来说更好。2:其次http协议,用过flask框架的人都知道,请求一次数据后就断开,而grpc基于http2.0,它不但可以保持长链接,传输效率也更高,使用方面,因为http2.0相当于tcp一样使用,现在很多大厂也都开始用http2.0了。http2.0相比http的优势很明显,头部压缩,分流,针对tcp的多路复用。所以基于http2.0的grpc无论从生态和性能方面都更好。 这张图是一个gRPC相关的架构图,同学们可以通过这张图了解gRPC在项目中的使用。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧