Я разрабатываю веб-сайт с использованием VS 2008 (С#). Моя текущая миссия - разработать модуль, который должен выполнять следующие задачи:
NewUsers18Jan2009.xml
).Чтобы достичь этого, какой из следующих наиболее подходит?
Есть ли образцы для демонстрации этого?
Отделите эту задачу от своего веб-сайта. Все веб-сайты проходят через веб-сервер. Поместите логику в библиотеку классов (чтобы вы могли использовать ее в будущем, если вам потребуется проверка по запросу по запросу), и используйте этот класс в консольном приложении. Используйте функцию "Запланированная задача" Windows и установите это консольное приложение каждые 15 минут. Это гораздо лучшее решение, чем запуск запланированной задачи через IIS.
Это не похоже на какую-либо часть пользовательского интерфейса для вашей задачи. В этом случае используйте либо службу Windows, либо запланированное приложение. Я бы пошел с сервисом, потому что мне было проще управлять удаленно.
Я не вижу связи с веб-сайтом здесь...
Почему в мире администратору нужно будет пинговать каждые 15 минут? Бедный админ!
Я бы просто поставил метку времени для каждой записи в вашей таблице пользователей и создала быстрый отчет, чтобы позволить администратору запрашивать данные, когда им это нужно.
Самый простой способ - создать System.Threading.Timer в приложении на Application_Start и поместить его в какое-то статическое поле, чтобы оно не собиралось. Таким образом, вы можете заставить свой веб-приложение опросить базу данных без необходимости внешнего процесса. Конечно, если ваше приложение отключается, значит, таймер. Для логики опроса просто держите последний userId (если у вас есть политика инкремента) и проверьте наличие новых добавленных пользователей путем фильтрации WHERE id > lastId.
Служба Windows предоставит вам хорошее решение - или если вы используете SQL Server, вы можете запустить такую обработку из задания агента SQL.
Если вы хотите, чтобы код был "частью" вашего веб-приложения, вы всегда могли запускать логику на странице биения, которая запускает вашу задачу всякий раз, когда вызывается URL-адрес, - вы можете затем опросить URL-адрес от службы или задание агента.
Я думаю, что ваш подход неправильный. Вы должны сделать одну из двух вещей:
Хотя я также проголосовал за создание службы Windows для выполнения этой функции для вас, самым простым способом, который я мог бы подумать, было бы поставить триггер в вашу таблицу "Пользователи", которая создаст файл xml для вас, когда пользователь вставлен.
Создайте новую таблицу (или текстовый файл), которая хранит последний раз, когда вы делали "новый пользовательский экспорт" или дополнительно просто искали дату изменения/создания последнего файла экспорта. Когда ваш script попадает в вашу БД, выполняйте команду SQL, чтобы все пользователи создали после последнего времени экспорта. Выложите новый XML для каждого пользователя.
Задайте этот script для запуска как запланированное задание/задание cron/возможно даже триггер базы данных.
Второй ответ Чака - вы можете извлечь эти данные из базы данных с помощью XML-запроса и отправить его напрямую, не нужно много создавать файлы в системе.
Поскольку вы, кажется, добавляете всех пользователей за данный день в один XML файл (согласно вашему сообщению), зачем вам это нужно каждые 15 минут? Разве не было бы достаточно сделать это один раз после полуночи?
Когда вы это делаете, желательно в службе Windows (если она должна запускаться каждые 15 минут) или в приложении командной строки, которое планируется запустить один раз, например, 0:15 часов, вам просто нужно будет проверить дату регистрации для пользователей, и если есть какой-либо зарегистрированный в прошлый день, вы добавите их в свой список и экспортируете этот список в файл XML в конце обработка таблицы.
Марк
asp.net
?