收藏本站
[公司资质]
[联系我们]
当前位置: 主页 > www.4742a.net >

Core 30 gRPC 双向流

时间:2019-09-28 15:32来源:未知 作者:admin 点击:
在前一文 《ASP.NET Core 3.0 使用gRPC》中有提到 gRPC 支持双向流调用,支持实时推送消息,这也是 gRPC的一大特点,且 gRPC 在对双向流的控制支持上也是非常强大的。 白俄罗斯发展起了轿车制造业既有真诚的 , gRPC 通信是基于 HTTP/2 实现的,它的双向流映

  在前一文 《ASP.NET Core 3.0 使用gRPC》中有提到 gRPC 支持双向流调用,支持实时推送消息,这也是 gRPC的一大特点,且 gRPC 在对双向流的控制支持上也是非常强大的。白俄罗斯发展起了轿车制造业……既有真诚的

  gRPC 通信是基于 HTTP/2 实现的,它的双向流映射到 HTTP/2 流。HTTP/2 具有流的概念,流是为了实现HTTP/2的多路复用。流是服务器和客户端在HTTP/2连接内用于交换帧数据的独立双向序列,逻辑上可看做一个较为完整的交互处理单元,即表达一次完整的资源请求、响应数据交换流程;一个业务处理单元,在一个流内进行处理完毕,这个流生命周期完结。

  我们在前文中编写的RPC属于简单RPC,没有包含流调用,下面直接讲一下双向流,根据第二小节列举的四种服务类型,如果我们掌握了简单RPC和双向流RPC,那么服务端流式 RPC和客户端流式 RPC自然也就没有问题了。

  BathTheCat 方法会接收多个客户端发来的CatId,然后将他们加入队列中,等客户端发送完成后开始依次洗澡并返回给客户端。

  可以看到双向流调用成功,客户端发送了10个猫洗澡请求对象,服务端返回了10个猫洗澡结果对象。且是实时推送的,这就是 gRPC 的双向流调用。

  这里大家可以自行改进来演变成客户端流式或者服务端流式调用。客户端发送一个猫Id列表,然后服务端返回每个猫洗澡结果,这就是服务端流式调用。客户端依次发送猫Id,然后服务端一次性返回所有猫的洗澡结果(给所有猫洗澡看做是一个业务,返回这个业务的结果),就是客户端流式调用。这里我就不再演示了。

  gRPC 的流式调用支持对流进行主动取消的控制,进而可以衍生出流超时限制等控制。www.dd151.com

  在流式调用是,可以传一个 CancellationToken 参数,它就是我们用来对流进行取消控制的:

  设置的是双向流式调用2.5s后取消流,从客户端调用结果看到,并没有收到全部10个猫的洗澡返回结果,流就已经被取消了,这就是 gRPC 的流控制。

  这里流式调用可以实现实时推送,服务端到客户端或者客户端到服务端短实时推送消息,但是这个和传统意义上的长连接主动推送、广播消息不一样,不管你是服务端流式、客户端流式还是双向流式,必须要由客户端进行发起,通过客户端请求来建立流通信。

(责任编辑:admin)
相关内容:
http://www.4742a.netwww.4742a.com,|六合蚂蚁,www.066966.com,慈善网,866766.com,www.06802.com,kj501开奖直播,www.080666.comwww.4742a.com,|六合蚂蚁,www.066966.com,慈善网,866766.com,www.06802.com,kj501开奖直播,www.080666.com
开奖结果| 香港免费最准一码中特| 王之王六合彩特码专家| 欲钱买白小姐什么肖| 小鱼儿论坛香港挂牌东| 天将论坛| 香港六和开奖挂牌| 香港挂牌正版最快更新| 惠泽天下报码开奖结果| 至尊城玄机网|