Это хорошая архитектура / концепция дизайна для обработки / манипулирования загрузкой файлов? - PullRequest
0 голосов
/ 27 июня 2010

Я смотрю, как добавить многофайловую загрузку в наше ASP.NET MVC веб-приложение. Я собираюсь использовать сторонний загрузчик мультифайлов Aurigma для обработки фактической загрузки.

Как только каждый файл получен веб-сервером на 100%, его необходимо проверить на следующее

  1. это изображение или видео.
  2. если это изображение, нужно ли изменять его размер? если да, измените размер.
  3. если это видео, нам нужно перекодировать его во флэш-память (к сожалению .. принесите html5 :))
  4. наконец, магазин на S3 amazon.

Так что я знаю, как выполнить большинство шагов с 1 по 4 - это не вопрос.

У меня вопрос: как мне на самом деле обрабатывать этот рабочий процесс ? Особенно, если я получаю большую часть мультимедиа одновременно -> в конце концов, это многофайловый загрузчик :) Я не хочу, чтобы много медиа обрабатывалось одновременно (например, 5 видео получаются закодировано для вспышки ..).

Поэтому я подумал, что у меня может быть установлено MSMQ, и когда каждый файл будет получен на 100%, вставьте его в MSMQ. Таким образом, только один предмет получает обработанных за один раз. Стоимость этого заключается в том, что при большой обработке дорогой очередь может фактически начать получать несколько элементов ... и с момента загрузки элемента будет некоторый период ожидания на сайт, пока он не будет обработан на 100%. Мы можем легко обработать это в пользовательском интерфейсе, чтобы сказать им, что это еще не закончено.

Итак - это звучит как хороший способ справиться с этой проблемой?

Во-вторых, это в сценарии веб-фермы .. поэтому необходимо учитывать установку / развертывание / обслуживание.

Хотелось бы увидеть, что думают другие люди.

Ответы [ 2 ]

1 голос
/ 27 июня 2010

Мне нравится ваше решение.

Уровень MVC должен отвечать за проверку файла и постановку в очередь только запроса. Фоновый процесс должен выполнять кодирование и другие тяжелые операции.

Благодаря этой архитектуре вы получаете возможность иметь несколько серверов кодирования, если на этом и заканчивается узкое место.

В прошлом я использовал MSMQ в подобных ситуациях. Это отличное решение «запусти и забудь», особенно за пределами сервера. Очевидно, что вы могли бы использовать веб-сервисы, совместно используемую файловую систему и т. Д. Для взаимодействия пользовательского интерфейса -> фоновой обработки, но я думаю, что MSMQ - правильный ответ.

0 голосов
/ 27 июня 2010

Как насчет запуска службы Windows, которая следит за временным каталогом (каталогом, в который загружаются файлы).Затем вызовите X потоков одновременной обработки.Таким образом, если вы установите X на 10, он будет обрабатывать только 10 файлов одновременно.После обработки они могут быть перемещены в постоянный каталог, и служба заберет следующий файл во временном каталоге.

Он также не позволяет обрабатывать ваше веб-приложение.

...