Отладка приложений

       

Основы программных служб


Вот три основных характеристики программной службы:

  • служба выполняется все время, даже когда на компьютере никто не зарегистрирован или когда он запускается впервые;
  •  служба не имеет пользовательского интерфейса;
  •  служба может управляться и контролироваться как локальными, так и удаленными клиентами.

Принимая решение о том, нужно ли писать приложение как службу или как нормальное приложение пользовательского режима, спросите себя, отвечает ли задача разработки, которую вы пытаетесь решить, этим трем требованиям? Если — да, то следует рассматривать приложение как службу. В этом случае необходимо хорошо понимать механизм работы службы. Если вы захотите изучить службы подробнее, просмотрите статью Джеффри Рихтера (Jeffrey Richter) "Design a Windows NT Service to Exploit Special Operating System Facilities" (Проектирование служб Windows NT для использования специальных возможностей операционных систем) в октябрьском (за 1997 год) журнале Microsoft Systems Journal (на MSDN).

Подходящим опытом написания именно службы (а не обычного приложения) является разработка программного обеспечения (ПО), которое должно контролировать источник бесперебойного электропитания (UPS1) для компьютера. ПО UPS должно контролировать сообщения аппаратуры UPS об отказе электропитания. Кроме того, когда питание пропадает, это ПО должно инициировать управляемое завершение работы компьютера. Очевидно, что если ПО UPS не выполняется все время (первый критерий для решения, должно ли приложение быть службой), то завершения не будет, и компьютер остановится только тогда, когда в аппаратуре UPS иссякнет батарейное питание. ПО UPS действительно не нуждается в интерфейсе пользователя (второй критерий), потому что от него требуется только выполнение в фоновом режиме и управление аппаратурой UPS. Наконец, если речь идет об аппаратуре UPS, используемых в распределенных центрах данных, то системные администраторы определенно захотят проверить состояние аппаратуры удаленных UPS (третий критерий).

Пока все это звучит достаточно просто. Теперь поговорим о том, как службы работают. Сначала рассмотрим специфические API-функции, которые нужно вызывать, чтобы превратить нормальный процесс пользовательского режима в службу.



Содержание раздела