gRPC c# 文件 download/upload + Web 客户端
gRPC c# file download/upload + web client side
主要问题:
我正在寻找一种解决方案来提高 upload/download 大文件的速度。我听说过相对较新的技术 gRPC。我知道这对服务器到服务器的通信很有用,例如微服务架构。
客户端
但是我需要前端(浏览器)上的文件 upload/download 组件(比如 Fine uploader,jQuery 文件上传插件,Resumable.js) 支持 gRPC。
我可以自己做支持。但我根本不知道如何、什么以及是否可能。
所以我需要一个例子或建议或指向正确的方向。
无论 JS 端:vanilla,react,angular ...
服务器端
- c# 更可取
- node.js 可能
- java 可行
对该主题的研究
- gRPC Java File Download Example - 这里给出了答案作为示例代码的链接。不幸的是链接坏了。
- SERVER STREAMING WITH GRPC AND .NET CORE - 客户端是控制台。
- Update UploadFileClient.java - 同上
- gRPC for .NET Examples - 没有我需要的例子
- The state of gRPC in the browser 和他的回购
Test various implementations of gRPC-Web Clients with various implementations of gRPC-Web proxies - 非常有趣(我认为有可能以某种方式在浏览器中实现客户端),但是由于我对 gRPC 的了解非常少,所以完成我的任务太复杂了
请帮忙或至少说不可能
是的,可以使用 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 Basics, gRPC Concepts, Building a gRPC service with Java
主要问题:
我正在寻找一种解决方案来提高 upload/download 大文件的速度。我听说过相对较新的技术 gRPC。我知道这对服务器到服务器的通信很有用,例如微服务架构。
客户端
但是我需要前端(浏览器)上的文件 upload/download 组件(比如 Fine uploader,jQuery 文件上传插件,Resumable.js) 支持 gRPC。 我可以自己做支持。但我根本不知道如何、什么以及是否可能。 所以我需要一个例子或建议或指向正确的方向。 无论 JS 端:vanilla,react,angular ...
服务器端
- c# 更可取
- node.js 可能
- java 可行
对该主题的研究
- gRPC Java File Download Example - 这里给出了答案作为示例代码的链接。不幸的是链接坏了。
- SERVER STREAMING WITH GRPC AND .NET CORE - 客户端是控制台。
- Update UploadFileClient.java - 同上
- gRPC for .NET Examples - 没有我需要的例子
- The state of gRPC in the browser 和他的回购 Test various implementations of gRPC-Web Clients with various implementations of gRPC-Web proxies - 非常有趣(我认为有可能以某种方式在浏览器中实现客户端),但是由于我对 gRPC 的了解非常少,所以完成我的任务太复杂了
请帮忙或至少说不可能
是的,可以使用 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 Basics, gRPC Concepts, Building a gRPC service with Java