2015-06-16 1 views
0

Мне нужно запустить 4 фоновых шара для очистки временных файлов и обработки некоторых файлов. Я выбрал Quart.net для работы.Quartz.NET: в приложении Asp.Net Web vs Console Application

У меня есть сайт Asp.Net, который позволяет загружать файлы, которые будут обрабатываться Quartz Jobs в ночное время.

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

Но тогда я видел, что мне понадобятся некоторые значения конфигурации (connectionstring и пути к файлам), которые находятся на asp.net web.config. Поэтому мне пришло в голову следующее:

Должен ли я запускать задания через экземпляр asp.net или я должен делать это в консольном приложении?

Кроме того, я хочу, что, когда рабочие Кварц начать работать, веб-сайт показать специальную страницу (например, «Мы обрабатываем файлы ...).

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

Итак, что я должен делать? Вы сделали что-то подобное и можете дать мне совет?

+0

вы можете создать службу Windows и позволить службе Windows запустить задание кварца. в то время как выполняется задание кварца, вы можете иметь флаг, хранящийся в таблице, в котором говорится, что задание кварца запущено и на вашей странице asp.net, просто прочитайте этот флаг и отобразите страницу, на которой указано, что задание выполняется, если этот флаг правда. вы можете использовать jquery ajax для проверки флага. – Sushil

ответ

1

Должен ли я запускать задания через экземпляр asp.net или я должен делать это в консольном приложении?

Если вы хотите, чтобы их каждую ночь запускать вручную, обязательно. Но консольное приложение, использующее планировщик задач хост-системы, похоже на более автоматизированное решение. Веб-приложение - это скорее система запроса/ответа, она не подходит для периодических или длительных действий. Планирование какой-либо фоновой операции на хосте, например, запланированное консольное приложение или служба Windows, будет служить этой цели лучше.

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

я видел, что я буду нуждаться в некоторых конфигурационных значений (ConnectionString и пути к файлам), которые находятся на asp.net web.config приложения

консоли имеют App.config файлы, которые служат той же цели, , Вы можете использовать это.

я хочу, что, когда рабочие Кварц начать работать, веб-сайт показать специальную страницу

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

Возможно, существует несколько различных способов синхронизации статуса здесь, на самом деле не имеет значения, что вы выберете.Важно то, что системы остаются развязанными и что любой статус, который статически сохраняется, обрабатывается несколько осторожно, чтобы избежать ошибочного процесса из-за неправильного статуса. (Например, фоновая задача задает статус «обработки», а затем каким-то образом выходит из строя. Веб-сайт навсегда указывает, что он обрабатывает.)