2013-05-08 6 views
1

Как разместить службу Windows в IIS и поддерживать ее, как она работает в Windows? Могу ли я использовать некоторые функции службы WCF?Как разместить службу Windows (например) в IIS

У меня нет доступа к самой Windows, только для IIS. Внутри этой службы я создам поток, который в запланированное время обработает некоторые данные.

ответ

1

Вы не можете, в ореховой скорлупе.

Однако вы можете использовать API мониторинга работоспособности, особенно функциональность сердцебиения. см:

http://msdn.microsoft.com/en-us/library/system.web.management.webheartbeatevent.aspx

Подробную информацию о классе вы должны реализовать будет называться, когда есть работа, чтобы сделать

также этот ответ на SO может помочь Understanding heartbeat in ASP.NET health monitoring

После того как вы реализованный производный класс webheartbeatevent, вы можете проверить свой дБ или что когда-либо хотите проверить, есть ли работа.

Лучшее решение IMHO - полностью отказаться от услуги и перестроить систему на 100% на основе сети, поскольку услуги становятся кошмаром для развертывания и обслуживания. как я предполагаю, вы сейчас узнаете ...

+0

Спасибо! Я посмотрю ... и обратно! –

4

Одним словом, вы не можете.

Более подробный ответ, что есть 2 проблемы: рабочие процессы

  1. IIS запускаются только тогда, когда запрос HTTP приходит Это означает, что вы не можете запустить службу в системе..
  2. Рабочие процессы IIS перерабатываются (то есть перезапускаются) на нескольких условиях. Например, рабочий процесс перезапускается, если HTTP-запрос не появляется в течение длительного времени. Это означает, что вы не можете контролировать, когда ваша служба отключена, если у вас нет доступа к конфигурации утилизации пула приложений. Имейте в виду, что логика рециркуляции гарантирует, что все ожидающие запросы HTTP будут завершены, но не дожидаются завершения всех фоновых потоков.

Вы можете прийти с частично решить таким образом:

  1. Создать метод WCF службы, который проверяет, является ли ваш затянувшийся нить жив, и если нет, то запускает его.
  2. Создайте очень простой сервис, который периодически (один раз в 5 секунд) вызывает этот метод. Разверните службу где-нибудь, например. на вашей собственной машине.

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

+0

Спасибо! Может быть, его время переосмыслить решение ... –

Смежные вопросы