Разработка служб Windows Бестужев Никита Евгеньевич Преподаватель Содержание
Разработка служб Windows Бестужев Никита Евгеньевич Преподаватель
Содержание лекции Что собой представляют службы Windows Разработка службы Windows 2
Что собой представляют службы Windows Службы Windows представляют собой такие приложения, которые могут автоматически запускаться при загрузке операционной системы. Они могут функционировать и без осуществления пользователем интерактивного входа в систему и производить в фоновом режиме какие-то операции по обработке. 3
Что собой представляют службы Windows Примеры служб: Простой компонент TCP/IP Services (Службы TCP/IP). Компонент World Wide Publishing Service (Служба WWW). Компонент Event Log (Журнал событий). Компонент Windows Search (Поиск Windows). 4
Что собой представляют службы Windows 5
Что собой представляют службы Windows Для оперирования службой Windows необходимы три программы: программа службы; программа для управления службой; программа для конфигурирования службы. 6
Что собой представляют службы Windows Программы службы: главная функция; главная служебная функция; обработчик. 7
Что собой представляют службы Windows Диспетчер управления службами (Service Control Manager – SCM) представляет собой часть операционной системы, которая взаимодействует со службами 8
Что собой представляют службы Windows 9
Что собой представляют службы Windows Главная функция, главная служебная функция и обработчики: Главная функция службы представляет собой обычную точку входа в программу, т.е. метод Main(). Одной из важнейших задач главной служебной функции является регистрация обработчика в SCM. Работа служб может останавливаться, приостанавливаться и возобновляться, и обработчик должен обязательно быть способен реагировать на все такие события. 10
Что собой представляют службы Windows Классы для служб Windows: Класс ServiceBase является главным классом, от которого должно осуществляться наследование для реализации службы. Этот класс применяется для регистрации службы и ответа на запросы, касающиеся ее запуска и остановки. Класс ServiceController позволяет реализовать программу для управления службой. С помощью этого класса можно отправлять службам запросы. Классы ServiceProcessInstaller и Servicelnstaller, как не трудно догадаться по их именам, позволяют устанавливать и конфигурировать программы служб. 11
Разработка службы Windows В Visual Studio шаблон проекта называется С# Windows Services (Служба Windows на С#). По умолчанию службе назначается имя Service1, каким бы образом не назывался сам проект. 12
Разработка службы Windows Класс ServiceBase: Класс ServiceBase является базовым для всех приложений типа Windows Service, которые разрабатываются с помощью .NET Framework. 13
Разработка службы Windows 14
Разработка службы Windows Главная функция: // Главная точка входа для процесса static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase [] { new QuoteService() }; ServiceBase.Run(ServicesToRun); } Процесс инициализация не должен занимать более 30 секунд. 15
Разработка службы Windows Запуск службы: protected override void OnStart(string [] args) { … //Логика сервиса } 16
Разработка службы Windows Методы-обработчики: OnPause(). OnContinue(). OnShutdown(). OnPowerEvent(). OnCustomCommand(). 17
Разработка службы Windows Установка службы: Все службы размещаются в разделе HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Подобная конфигурация может обеспечиваться с помощью классов установщиков из пространства имен System.ServiceProcess. 18
Разработка службы Windows Программа установки: 19
Разработка службы Windows Класс Installer: using System.ComponentModel; using System.Configuration.Install; namespace WinServices { [Runlnstaller(true)] public partial class Projectlnstaller: Installer { public Projectlnstaller () { InitializeComponent(); } } } 20
Разработка службы Windows Классы ProcessInstaller и ServiceInstaller: private void InitializeComponent() { this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller(); this.servicelnstaller1 = new System.ServiceProcess.Servicelnstaller(); // // serviceProcessInstaller1 // this.serviceProcessInstaller1.Password = null; this.serviceProcessInstaller1.Username = null; 21
Разработка службы Windows Классы ProcessInstaller и ServiceInstaller: // servicelnstaller1 // this.servicelnstaller1.ServiceName = "QuoteService"; // // Projectlnstaller // this.Installers.AddRange(new System.Configuration.Install.Installer[] {this.serviceProcessInstaller1, this.servicelnstaller1}); } 22
Разработка службы Windows Свойства, к которым предоставляется доступ всем службам внутри процесса: 23
Разработка службы Windows Свойства класса Servicelnstaller: 24
Разработка службы Windows На заметку! Изменив имя службы в унаследованном oт ServiceBase классе, не забудьте изменить и значение свойства ServiceName в объекте ServiceInstaller! На заметку! На стадии тестирования лучше устанавливать для свойства StartType значение Manual. Тогда при невозможности остановить службу (например, из-за присутствия в ней дефекта) перезапустить систему все равно будет получаться. В случае установки для StartType значения Automatic служба будет автоматически запускаться снова даже после перезагрузки системы. Удостоверившись, что служба действительно работает корректно, значение этого свойства можно будет легко поменять. 25
Разработка службы Windows Класс ServiceInstallerDialog: Если установить свойство Account класса ServiceProcessInstaller в ServiceAccount.User, а свойства Username и Password – в null, то во время процесса установки на экране будет отображаться диалоговое окно Set Service Login (Установить регистрационную информацию для службы) 26
Разработка службы Windows Утилита installutil: Установка службы: installutil quoteservice.exe Удаление службы: installutil /u quoteservice.exe 27
Разработка службы Windows Мониторинг и управление службами Windows: Оснастка Services (Службы). Утилита командной строки net.ехе. Утилита командной строки sc.exe. 28
Разработка службы Windows 29
Разработка службы Windows Утилита net.exe: net start <имя_службы> – запустить любую необходимую службу net stop <имя_службы> – отправить запрос на останов указанной службы 30
Разработка службы Windows Выявление неисправностей и регистрация событий: Не отображайте сообщения об ошибках службы в окне сообщений (если только служба не является интерактивной, запускаемой на клиентской системе). Вместо этого следует применять службу регистрации событий, чтобы все ошибки фиксировались в журнале событий. Запускать службу в отладчике нельзя, но зато отладчик можно подключить к работающему процессу службы. Для этого необходимо сначала открыть решение с исходным кодом службы и расставить точки останова, а затем в меню Debug (Отладка) в Visual Studio выбрать команду Processes (Процессы) и присоединиться к работающему процессу службы. Для наблюдения за активностью служб можно применять программу Performance Monitor (Монитор производительности). Она позволяет добавлять для службы собственные объекты производительности. В результате можно получить дополнительную информацию для отладки. 31
Спасибо за внимание! 32
22546-7._razrabotka_slughb_windows.ppt
- Количество слайдов: 32

