流中继以进行大型上传

时间:2013-11-07 20:13:35

标签: c# .net asp.net-mvc-4 stream asp.net-web-api

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

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

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

我的问题:

  1. 我是否会忽略任何可能会在以后用这种方法咬我的东西?我试图通过将文件系统保持在进程之外来限制效率。从好的方面来说,多次同时500 MB的上传在我的测试实现中基本上没有内存消耗。缺点
  2. 我正在为BufferedStream使用32KB缓冲区。这是一个合理的数字吗?使这个更大/更小的原因是什么?
  3. 最后,我确实知道有一个小部件和移动API我可以用来摆脱Kaltura的中间人角色。我们将实施这些。由于小部件需要Flash,我们使用此方法作为没有Flash的用户的后备。

0 个答案:

没有答案