ASP.NET приложение которое всегда 'стартовано'?
От: Glenn  
Дата: 29.03.12 12:20
Оценка:
У меня есть ASP.NET приложение. Некоторое время назад мне понадобилось, чтобы оно ещё и постоянно выполняло некие периодические операции, никак не связанные с поступлением HTTP-запросов от конечных пользователей — допустим, раз в 5 мин проверяло нечто в базе и тд
Очевидное решение — завести для таких периодических операций Service (ну или просто Application, запускаемый при startup-е компьютера). Однако нельзя ли как-то эту задачу повесить на само моё ASP.NET приложение?
Glen
Re: ASP.NET приложение которое всегда 'стартовано'?
От: pugv Россия  
Дата: 29.03.12 12:24
Оценка:
G>Очевидное решение — завести для таких периодических операций Service (ну или просто Application, запускаемый при startup-е компьютера). Однако нельзя ли как-то эту задачу повесить на само моё ASP.NET приложение?
Это архитектурно неправильно. Для этого есть сервисы, задания по расписанию в БД и т.д.
Re: ASP.NET приложение которое всегда 'стартовано'?
От: Lloyd Россия  
Дата: 29.03.12 12:25
Оценка:
Здравствуйте, Glenn, Вы писали:

G>У меня есть ASP.NET приложение. Некоторое время назад мне понадобилось, чтобы оно ещё и постоянно выполняло некие периодические операции, никак не связанные с поступлением HTTP-запросов от конечных пользователей — допустим, раз в 5 мин проверяло нечто в базе и тд

G>Очевидное решение — завести для таких периодических операций Service (ну или просто Application, запускаемый при startup-е компьютера). Однако нельзя ли как-то эту задачу повесить на само моё ASP.NET приложение?

Сделайте отдельное приложение и пропишите его запуск в Task Scheduler-е.
Re: ASP.NET приложение которое всегда 'стартовано'?
От: Аноним  
Дата: 29.03.12 12:39
Оценка:
Здравствуйте, Glenn, Вы писали:

G>У меня есть ASP.NET приложение. Некоторое время назад мне понадобилось, чтобы оно ещё и постоянно выполняло некие периодические операции, никак не связанные с поступлением HTTP-запросов от конечных пользователей — допустим, раз в 5 мин проверяло нечто в базе и тд

G>Очевидное решение — завести для таких периодических операций Service (ну или просто Application, запускаемый при startup-е компьютера). Однако нельзя ли как-то эту задачу повесить на само моё ASP.NET приложение?

Добавить в проект Global.asax, в методе Application_Start которого завести таймер на нужное время и по таймеру выполнять проверки.
Re[2]: ASP.NET приложение которое всегда 'стартовано'?
От: motormanyak Земля  
Дата: 29.03.12 12:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добавить в проект Global.asax, в методе Application_Start которого завести таймер на нужное время и по таймеру выполнять проверки.


Блин, не залогинился
In God We Trust
Re[2]: ASP.NET приложение которое всегда 'стартовано'?
От: Glenn  
Дата: 29.03.12 12:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Glenn, Вы писали:


G>>У меня есть ASP.NET приложение. Некоторое время назад мне понадобилось, чтобы оно ещё и постоянно выполняло некие периодические операции, никак не связанные с поступлением HTTP-запросов от конечных пользователей — допустим, раз в 5 мин проверяло нечто в базе и тд

G>>Очевидное решение — завести для таких периодических операций Service (ну или просто Application, запускаемый при startup-е компьютера). Однако нельзя ли как-то эту задачу повесить на само моё ASP.NET приложение?

А>Добавить в проект Global.asax, в методе Application_Start которого завести таймер на нужное время и по таймеру выполнять проверки.


Да, но если некоторое время нет ни одного запроса к этому ASP.NET приложению, то через некоторое время оно завершается. А у меня такая ситуация вполне возможна — у меня не так много пользователей, и можно предположить что случится 20-минутный период в течение которого не прихшло НИ ОДНОГО запроса.
Glen
Re[2]: ASP.NET приложение которое всегда 'стартовано'?
От: Mr.Cat  
Дата: 29.03.12 12:59
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Добавить в проект Global.asax, в методе Application_Start которого завести таймер на нужное время и по таймеру выполнять проверки.
Плюс можно юзать библиотеки, вроде http://quartznet.sourceforge.net/ (хз насчет дотнетный порт, но оригинальный джавовский кварц — либа продакшн-качества).
Еще надо убедиться, что можно IIS заставить: 1) не ресайклить пул при отсутствии активности (вроде есть опция), 2) после ресайкла пула или рестарта приложения или еще чего стартовать приложение его сразу, а не при первом запросе (вроде есть в IIS 7.5 http://stackoverflow.com/q/4333128/302086) 3) не выполнять никаких других глупостей (все-таки IIS рассчитывает на обычное веб-приложение).
Думаю, на безрыбье сойдет, но, по идее, надежнее или отдельная служба, или джоб в mssql (не любитель, но кому-то нравится), или виндовый таск шедулер (не пользовался, но ругают, что ненадежный).
Re[3]: ASP.NET приложение которое всегда 'стартовано'?
От: motormanyak Земля  
Дата: 29.03.12 13:14
Оценка:
Здравствуйте, Glenn, Вы писали:

G>Да, но если некоторое время нет ни одного запроса к этому ASP.NET приложению, то через некоторое время оно завершается. А у меня такая ситуация вполне возможна — у меня не так много пользователей, и можно предположить что случится 20-минутный период в течение которого не прихшло НИ ОДНОГО запроса.


Сам не проверял, но ...
In God We Trust
Re: ASP.NET приложение которое всегда 'стартовано'?
От: Kubyshev Andrey  
Дата: 01.04.12 04:00
Оценка:
Раз в timeout-1 тягай сам себя
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.