Как проверить работоспособность службы Windows? - PullRequest
1 голос
/ 30 июня 2010

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

Я использую класс ServiceController из System.ServiceProcess. Считаете ли вы, что если служба не отвечает, ServiceController.Status вернет исключение?

Как бы вы подошли к проблеме?

Спасибо

EDIT Кажется, что: ServiceController.Status может возвращать 2 типа исключений:

System.ComponentModel.Win32Exception: An error occurred when accessing a system API.
System.InvalidOperationException: The service does not exist as an installed service.

Ничего о реактивности.

Ответы [ 2 ]

2 голосов
/ 30 июня 2010

Это может быть очевидно, но вы пробовали разговаривать со службой ?

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

Единственныйспособ состоит в том, чтобы фактически отправить ему запрос и дождаться ответа, и для этого вам нужен какой-то межпроцессный канал связи, например:

  • Сеть
  • Именованные каналы
  • Сообщения

Как правило, если вам нужно определить, может ли служба отвечать, вам нужно проверить, отвечает ли она.

2 голосов
/ 30 июня 2010

Типы контроллеров сервиса и API могут предоставлять информацию только на основе ответа сервиса на эти API.

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

В конце концов, вам необходимо определить «отзывчивый» в терминах функциональности сервисов (например, пакетный процессор обрабатывает пакеты) и предоставить механизм (API A2A, WMI, Performance Counters) для этого.

...