1

我有一个 .NET Web 应用程序(MVC4、Web API),它需要通过 Multipart POST 请求接收大量上传(视频 >500MB)。我试图通过将视频部分的传入流直接中继到将处理和存储视频的服务器(Kaltura)来改善用户体验。这是对将视频存储在文件系统上的文件中的当前进程的改进,该文件稍后由视频服务器检索。

我通过创建名为 RelayingStreamProvider 的 MultipartStreamProvider 的子类来完成此操作。我将我创建的 WebRequest 的请求流传递给 Kaltura 服务器,它使用它进行写入。当我构造 RelayingStreamProvider 时,我将请求流包装在 BufferedStream 中,以处理此过程的读取或写入端的任何延迟或中断。

我也在我的 Web API 控制器中关闭了请求缓冲。

我的问题:

  1. 我是否忽略了以后可能会用这种方法咬我的任何东西?我试图通过将文件系统排除在进程之外来限制效率。从好的方面来说,在我的测试实现中,多个同时上传的 500 MB 基本上不消耗内存。缺点?
  2. 我正在为我的 BufferedStream 使用 32KB 缓冲区。这是一个合理的数字吗?使这个更大/更小的原因是什么?

最后,我确实知道有一个小部件和移动 API 可以用来让自己摆脱 Kaltura 的中间人角色。我们将实施这些。由于小部件需要 Flash,因此我们将这种方法用作没有 Flash 的用户的后备方案。

4

0 回答 0