Я работаю над стандартным веб-приложением ASP.NET MVC 3 (размещенным на IIS 7). Сайт позволяет пользователям загружать фотографии, между прочим.
Процесс загрузки выглядит следующим образом:
- Пользователь использует виджет (в настоящее время plupload ) для выбора файлов на своем ПК.
- AJAX-вызов происходит с моим сервером, с изображением в HTTP POST (Request.Files)
- Сервер изменяет размер фотографии N количество раз
- Каждая фотография с измененным размером загружается в Amazon S3
На данный момент все вышеперечисленное реализовано с использованием метода «забей и забудь» с использованием TPL .NET 4.0.
Я хотел бы сделать вышесказанное более гибким и надежным. Например, если обработка изображения завершается неудачно (используется GDI, поэтому, скорее всего) или S3 не работает (что происходит), я или пользователь об этом не узнаем.
Я думаю о размещении службы WCF в качестве службы Windows, которая опрашивает папку с изображениями.
Мой основной веб-сайт будет просто отправлять изображение в папку «Просмотрено», а затем служба будет заботиться об обработке изображения и загрузке.
Пользователь не должен быть уведомлен "немедленно", что фотография сделана. Другими словами, сейчас мы показываем сообщение «Ваше изображение обрабатывается и скоро будет доступно».
Подводя итог, услуга должна:
- Изменить размер изображения
- Загрузка изображений на S3
- Чтение / запись в базу данных
- Возможность «повторить» неудачные изображения
Есть совет? FileSystemWatcher хороший вариант?