Реализовать демон на сайте ASP.NET / C # / IIS? - PullRequest
3 голосов
/ 13 февраля 2010

Я бы хотел внедрить компонент обработки почтовых ящиков POP3 для нашего потребительского веб-сайта среднего размера. Наш сайт использует IPSwitch в качестве хоста mail / smtp / pop.

Этот компонент обработки позволил бы нам предлагать услуги типа «ответить на обсуждение на доске объявлений по электронной почте». Это должно было бы бежать постоянно; или, по крайней мере, каждые 3-5 минут или что-то.

Я почти уверен, что знаю, что мне нужно сделать, чтобы реализовать этот POP3-ридер в C #, , но Я просто не уверен в механизме, который делает это каждые 3-5 минут, продолжает он работает, когда машина перезагружается и т. д. Планировщик заданий кажется немного хрупким. Должно ли это быть написано вместо этого как служба Windows? И если да, могу ли я получить несколько хороших советов о том, как написать устанавливаемую службу в C #? Или, если есть лучший план для запуска демона на IIS, я был бы очень признателен.

Ответы [ 3 ]

1 голос
/ 17 февраля 2010

Вы можете запустить поток в фоновом режиме, который будет длиться до тех пор, пока ваше приложение живо. Так что в вашем global.asax на Application_Start запустите что-то вроде

Thread  thread = new Thread(new Task());
thread.Start();

и ваша задача:

private void Task()
{
//do something
Sleep(TimeSpan.FromMinutes(15).ToMilliseconds());
}

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

http://nayyeri.net/how-to-build-a-task-scheduler-system-for-the-asp-net-part-1

Помните, что задача не будет выполнена, когда ваше приложение еще не запущено / не инициализировано, но я думаю, что это не проблема в вашем сценарии.

0 голосов
/ 14 февраля 2010

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

То, что я сделал при создании сервиса, это поместил 100% моей логики в класс, который находится за пределами сервиса. Затем я добавил консольную программу и добавил ссылку, чтобы я мог легко запустить консольную программу (что, в свою очередь, привело к возникновению логики).

0 голосов
/ 13 февраля 2010

ОК, этот учебник по созданию службы Windows в C # кажется именно тем, что мне нужно. Любые ошибки, которые нужно знать? Спасибо за любой совет.

Создание службы Windows в C #

...