1

主要问题:

我正在寻找一种解决方案来提高大文件的上传/下载速度。我听说过相对较新的技术 gRPC。我知道服务器到服务器的通信有好处,例如微服务架构。

客户

但是,我需要前端(浏览器)上的文件上传/下载组件(例如Fine 上传器、jQuery 文件上传插件、 Resumable.js 等)并支持 gRPC。我可以自己做支持。但我不知道如何以及什么以及是否有可能。所以我需要一个例子或一个建议或指向正确的方向。无论 JS 方面:vanilla、react、angular ...

服务器端

  • c# 更可取
  • node.js 可能
  • java 可行的

对该主题进行的研究

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

4

1 回答 1

1

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

gRPC 使用 protobuf 进行通信,需要通信的数据被封装在一个 protobufmessage中。

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

用他的例子,

message DataChunk {
   bytes data = 1;
}

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

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

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

这是一个很好的起点gRPC Java Basics , gRPC Concepts , Building a gRPC service with Java

于 2019-12-27T06:11:03.780 回答