Я работаю над приложением ASP.NET, содержащим службы WCF, которое предназначено для использования в качестве двойного теста для рабочей среды моделирования.Он стоит за очень сложным бэкэндом, который может получать заказы через свои веб-сервисы, а затем отправлять уведомления часами или днями позже (путем вызова веб-сервисов в других системах).
Один изтребования к первой версии этого тестового двойного приложения состояли в том, чтобы оно было без сохранения состояния, то есть без базы данных.
Проект, разработанный первоначальными разработчиками, которые больше не участвуют в проекте:
- Получите заказ через веб-сервис.
- Создайте фоновый поток
- Верните постоянный ответ клиенту
- Затем фоновый поток спит в течение 5 - 30секунд, отправляет уведомление, снова спит, отправляет уведомление, повторяя, возможно, три-четыре раза, а затем, наконец, завершается, когда нечего делать
Поток спит 5 - 30 секунд предназначен дляИмитировать долгие часы и дни задержки производственной системы.Каждый фоновый поток будет жить не более трех минут.
В настоящее время дизайн, кажется, хорошо работает для своей цели.Пока единственная проблема, с которой сталкиваются при таком подходе, состоит в том, что если что-то происходит, что вызывает перезапуск приложения (изменение web.config, развертывание новых библиотек DLL, перезапуск IIS и т. Д.), Фоновые потоки, по-видимому, удаляются и все ожидающие уведомления дляфоновые потоки никогда не происходят.
Заказчик решил, что задержки на 5 - 30 секунд слишком малы, и что более подходящей является задержка в 5 минут между уведомлениями.Это будет означать, что время жизни фонового потока может составлять более 20 минут.
Мне кажется, что задержка в пять минут не является хорошей идеей для этого проекта.Мне интересно посмотреть, что думают люди по этому поводу.
Насколько надежным будет этот дизайн с увеличенными задержками?Кто-нибудь имел опыт работы с долго работающими фоновыми потоками в ASP.NET, который мог бы прокомментировать это?