C# для профессионалов. Том II
Шрифт:
Функция обработки является третьей частью служебной программы. Обработчик должен отвечать на события из SCM. Службы могут останавливаться, приостанавливаться, продолжаться. Обработчик должен реагировать на эти события.
Управляющий менеджер служб
Управляющий менеджер служб (SCM — Service Control Manager) является частью операционной системы, которая взаимодействует со службой. Давайте посмотрим, как работает эта коммуникация на диаграмме последовательностей UML:
Во время начальной загрузки системы начинает работу каждый
Одной из важных задач, которую имеет основная служебная функция, является регистрация обработчика в SCM. Служебная управляющая программа посылает запросы SCM для остановки, приостановки и возобновления работы службы. Служебная управляющая программа независима от SCM и самой службы. Мы получаем вместе с операционной системой множество служебных управляющих программ, одна из них — ММС Services Snap-in, которую мы видели ранее. Можно написать также свою собственную служебную управляющую программу. Хорошей служебной управляющей программой является часть установки SQL Server. Она выводит цветные кнопки для управления службами SQL Server:
Служебная управляющая программа
Как предполагает название, служебная управляющая программа управляет службой. Для остановки, приостановки и возобновления работы службы ей посылаются управляющие коды, а обработчик должен реагировать на эти события. Также можно запрашивать службу о реальном статусе, при этом реализуется специальный обработчик, который отвечает на специальные управляющие коды.
Конфигурационная программа службы
Мы не можем использовать для установки службы хсору, так как службы должны конфигурироваться в реестре. Можно задать тип запуска как автоматический, ручной или отключенный. Необходимо сконфигурировать пользователя служебной программы и зависимости службы, например службы, которые должны начать работу перед тем, как запускается эта служба. Все конфигурации производятся внутри конфигурационной программа службы. Установка программы использует программу для конфигурирования службы, но эта программа может также использоваться позже для изменения параметров конфигурации службы.
Пространство имен System.ServiceProcess
В .NET Framework находятся классы служб в пространстве имен
□ Для реализации службы мы наследуем из класса
□ Класс
□ Классы
Давайте посмотрим, как создается новая служба
Создание службы
Создаваемая служба будет содержать сервер цитирования (quote server). Для каждого сделанного клиентом запроса сервер цитирования возвращает случайную цитату файла цитат. Первая часть решения будет сделана с помощью трех сборок: одна для клиента
и две — для сервера. СборкаПрежде чем разработать служебную часть программы, создадим простой сервер сокета в дополнительной библиотеке классов C#, которая будет использоваться из процесса службы.
Библиотека классов, использующая сокеты
В системе Windows 2000 Server можно установить службы простого TCP/IP как компоненты Windows. Частью служб простого TCP/IP является сервер TCP/IP "цитата дня" ("quote of the day", кратко называемая "qotd"). Эта простая служба слушает порт 17 и отвечает на каждый запрос случайным сообщением из файла
Постепенно начнем создавать исходный код класса
Конструктор