gRPC c#文件下载/上传+ Web客户端

时间:2019-12-26 08:37:32

标签: c# grpc grpc-web

主要问题:

我正在寻找一种解决方案,以提高大文件的上传/下载速度。我听说过相对较新的技术gRPC。我了解这对服务器到服务器的通讯很有用,例如微服务架构。

客户

但是我需要前端(浏览器)上的文件上传/下载组件(例如 Fine uploader,jQuery文件上传插件,Resumable.js ),该文件具有gRPC支持。 我可以自己提供支持。但是我完全不知道如何以及如何以及是否有可能。 因此,我需要一个例子或建议或指向正确的方向。 不管JS端如何:香草,反应,有角度的 ...

服务器端

  • 建议使用c#
  • node.js可能
  • java可行

有关该主题的研究

请帮助或至少说这是不可能的

1 个答案:

答案 0 :(得分:1)

是的,可以使用gRPC在浏览器和服务器之间进行通信。我建议您在实施解决方案之前进行概念验证。

gRPC使用protobuf进行通信,并且需要通信的数据封装在protobuf message中。

gRPC Java File Download Example中的第一个答案是正确的。为了能够通过网络传输文件,您必须将其转换为bytes

使用他的例子,

message DataChunk {
   bytes data = 1;
}

service imageService {
   rpc DownloadProductImage(DownloadProductImageRequest) returns(stream DataChunk);
}

所有这些代码都应该在protofile中,并且应该使用protobuf生成器(通常是Java的maven插件)生成实现。

在提供的示例中要注意的重点是单词 stream ,这是使您能够将字节发送到服务器的方法,反之亦然。在该示例中,他正在从服务调用DownloadProductImage下载字节流。

这里是gRPC Java BasicsgRPC ConceptsBuilding a gRPC service with Java的好起点