我正在考虑将多文件上传添加到我们的ASP.NET MVC
网络应用程序中。我将使用3rd Party Multi-File uploader Aurigma来处理实际的上传。
一旦Web服务器100%收到每个文件,就需要检查以下内容
所以我知道如何做大部分步骤1到4 - 这不是问题。
我的问题是:我应该如何处理这个工作流程?特别是如果我一次获得大量媒体 - >毕竟,这是一个多文件上传器:)我不希望一次处理大量媒体(例如,5个视频被编码为闪存......)。
所以我想我可能已安装MSMQ
,当每个文件100%收到时,然后将其弹出到MSMQ
。这样,只有一个项目一次处理。这样做的代价是,如果有很多昂贵的处理,那么队列实际上可能会开始在那里获得一些项目...并且从项目开始时将有一些等待期。上传到网站,直到它实际上100%处理。我们可以在UI中轻松处理这个问题,告诉他们还没有完成。
那么 - 这听起来像处理这个问题的好方法吗?
其次,这是在Web场方案中..因此需要考虑安装/部署/维护。
很想看到别人在想什么。
答案 0 :(得分:1)
我喜欢你的解决方案。
MVC层应负责验证文件并仅对请求进行排队。后台进程应该进行编码和其他繁重的工作。
使用这种架构,您可以拥有多个编码服务器,如果这是瓶颈结束的地方。
过去我在类似的情况下使用过MSMQ。这是一个伟大的“即发即忘”解决方案,尤其是跨服务器边界。显然,您可以为UI使用Web服务,共享文件系统等 - >后台处理通信,但我认为MSMQ是正确的答案。
答案 1 :(得分:0)
运行一个监视临时目录的Windows服务(文件上传的目录)怎么样?然后让它产生同时处理的X线程。这样,如果将X设置为10,那么它一次只能处理10个文件。处理完毕后,可以将它们移动到永久目录,服务将获取临时目录中的下一个文件。
它也使处理过程远离您的Web应用程序。