Рекомендации по разработке долговременной ресурсоемкой веб-службы

У меня есть функция .NET, которая выполняет некоторые сложные вычисления. В зависимости от переданных параметров функция:

  • Запускается от нескольких минут до нескольких часов
  • Использует 100% одного ядра во время вычислений
  • Требуется от 100 МБ до нескольких ГБ памяти
  • Записывает от нескольких МБ до нескольких ГБ данных на диск
  • Может вызывать исключение, включая OutOfMemoryException

. Объем данных, которые должны быть записаны на диск, может быть точно спрогнозирован на основе параметризации функции. Нет простого способа предсказать другие требования к ресурсам на основе параметризации функции.

Мне нужно открыть эту функцию через веб-службу. Эта услуга должна быть:

  • Устойчивый и изящный отчет о любых проблемах во время вычислений.
  • Способность обрабатывать параллельные запросы, пока есть достаточные ресурсы для обработки запроса без значительного снижения производительности, и в противном случае корректно отклонять запрос.

I ' m намеревается справиться с долговременным характером, имея начальный запрос, возвращающий ресурс состояния, который можно опрашивать на предмет прогресса. После завершения расчетов этот ресурс предоставит местоположение выходных данных, которые клиент может загрузить (возможно, через FTP).

Я не совсем понимаю, как лучше всего удовлетворить другие требования. Я рассматриваю некий «пул вычислений», который поддерживает экземпляры калькулятора и отслеживает, какие из них используются в настоящее время, но я не выяснил подробностей.

Есть ли у кого-нибудь, кто сталкивался с подобными ситуациями, какие-нибудь предложения? Если решение может работать на компьютере с Windows, можно рассмотреть все варианты технологии.

6
задан Akash 12 November 2010 в 12:34
поделиться