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

标签 c# grpc grpc-web

主要问题:

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

客户端

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

服务器端

  • c# 优先
  • 可能是 node.js
  • Java 可行

对该主题的研究

请帮忙或至少说不可能

最佳答案

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

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

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

用他的例子,

message DataChunk {
   bytes data = 1;
}

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

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

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

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

关于c# - gRPC c# 文件下载/上传 + Web 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59485873/

相关文章:

c++ - 使用 std::unique_ptr 时静态库中出现奇怪的 'missing import symbols'

blazor wasm --hosted + gRCP 网络(流)

c# - 系统反射 .Invoke() 无法捕获异步调用方法内的异常

c# - 使用构造函数链来完成此构造的正确方法?

python - gRPC:Rendezvous 终止(StatusCode.INTERNAL,收到 RST_STREAM,错误代码为 2)

kubernetes - Linkerd 以意想不到的方式对 gRPC 服务进行负载均衡

docker - gRPC-web无法连接到服务器(代理配置问题)

使用 gRPC Web 进入 WebAssembly

c# - Visual Studio 2008 锁定自定义 MSBuild 任务程序集

c# - 显示 ConnectionString 对话框