Приложения-службы
октября 12 2009 by admin in Обязательный материалОперационная система Microsoft Windows предоставляет различные средства, которые упрощают реализацию серверной части клиент-серверных приложений. Как вы знаете, сервер — это Windows-приложение, обслуживающее клиентов. Microsoft рекомендует реализовывать серверные приложения в виде счужб. Чтобы получить право использовать логотип Microsoft BackOffice, серверное приложение должно быть реализовано как служба.
Служба — это обычное Windows-приложение, содержащее дополнительную инфраструктуру, которая позволяет ОС рассматривать его особым образом, например, давать возможность администратору запускать и останавливать это приложение с удаленной машины. Превратив свое серверное приложение в службу, вы без всяких затрат получаете это и многие другие преимущества. В этой главе рассказывается о том, что представляют собой приложения-службы, как их разрабатывать и какие дополнительные функции предоставляет им ОС.
Сама ОС Windows включает множество служб Вот некоторые из служб, установленные на моей машине с Windows 2000, а также исполняемые файлы, содержащие их код.
В Microsoft создано гораздо больше служб, чем я перечислил, вот лишь некоторые: Microsoft Exchange Server, Microsoft Merchant Server и Microsoft SQL Server. Все эти серверные приложения реализованы как службы и входят в состав Microsoft BackOffice Suite.
Серверное приложение — это лишь 32-разрядная или 64-разрядная программа, так что все, что вы уже знаете о DLL. структурной обработке исключений, отображаемых в память файлах, виртуальной памяти, вводе-выводе на устройства, локальной памяти потоков, синхронизации потоков, Unicode и прочих возможностях Windows, применимо к службам. А значит, процесс преобразования существующего серверного приложения в службу будет для вас относительно простым и понятным.
Утилита SrvAny.exe из Microsoft Windows 2000 Resource Kit позволяет запускать существующее приложение с удаленной машины как настоящую службу. Однако SrvAny.exe не дает других возможностей удаленного администрирования, и ее применение можно рассматривать лишь как временную меру. Я настойчиво рекомендую вам изменить свое приложение так, чтобы оно было полноценной службой и впредь не пользоваться SrvAnv.
Далее. У службы не должно быть пользовательского интерфейса. Большинство служб работает на серверных машинах, расположенных в закрытых помещениях. Так что если ваша служба имеет элементы пользовательского интерфейса, скажем, выводит информационное окно, отреагировать на содержащиеся в нем сведения будет некому. Как бы там ни было, окна скорей всего будут выводиться не на те оконные станции и рабочие столы, где их может увидеть пользователь.
Как же настраивать службу без пользовательского интерфейса? Как ее запустить и остановить? Как она выводит предупреждения и сообщения об ошибках? Как может выдавать статистические данные о своей производительности? Ответ на все эти вопросы один: все это позволяет сделать удаленное администрирование. Windows предлагает массу административных утилит для управления службами с других машин, связанных по сети, так что за компьютером, на котором исполняется служба, физически присутствовать нет необходимости. Со многими из этих утилит вы уже, вероятно, знакомы: с консолью управления Microsoft Management Console (MMC), которая содержит модульные компоненты Services, Event Viewer и System Monitor, с редактором реестра и утилитой командной строки Net.exe.
Эти средства упрощают программистам разработку служб, а администраторам дают мощное средство управления локальной и удаленными машинами. Заметьте: эти средства поддерживают не только службы — любые приложения или драйверы устройств могут задействовать их возможности.