Windows Service

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

В Microsoft Windows операционните системи, един Windows сервиз или услуга е изпълним файл, който е разработен така, че да не изисква намеса от потребителя (няма потребителски интерфейс). Windows сервиз може да се конфигурира както да бъде стартиран веднага след boot на операционната система и да работи във фонов режим докато Windows работи, така и ръчно пуснат, по команда от потребителя. Концепцията е подобна на Unix daemon-ните. Много от сервизите могат да бъдат намерени във списъка от процеси в Windows Task Manager, като най-често са изпълнявани в контекста на потребителите SYSTEM, LOCAL SERVICE, NETWORK SERVICE, но не всички процеси работещи под акаунта SYSTEM са сервизи. Останалите сервизи работят посредством системния процес svchost.exe като DLL-и, заредени в паметта.

Организация и менажиране[редактиране | edit source]

След като сервиза бива инсталиран, може да бъде менажиран от Services.msc конзолата (Control Panel > Administrative Tools). Конзолата предоставя кратко описание на всеки сервиз, пътя до изпълнимия файл, текущия статус, типа на стартиране, както и зависимости на потребителя. Диалога на сервиза позволява следните операции:

  • Старт, стоп, пауза, рестартиране на сервиза
  • Дефиниране на параметрите на сервиза
  • Смяна на типа на стартиране (Automatic, Automatic Delayed, Manual, Disabled)
  • Дефиниране на потребителя, в контекста на който ще работи сервиза
  • Дефиниране на настройките при отказ (failure).

Разработка на Windows Service[редактиране | edit source]

Всяка среда за разработка на приложения под Windows може да бъде използвана за разработка на сервиз, но разработването е коренно различно в зависимост от това дали той бива имплементиран на например на C++ или на .NET. Самия сервиз и неговите ресурси се менажират напълно от специален модул на Windows - Service Control Manager, а обръщенията към потребителския код се извършват посредством callback функции, подадени на Win32 Service API. За да може определено приложение да работи като сервиз, то трябва да имплементира операциите (съобщенията), изисквани от Service Control Manager, например стартиране, паузиране и стопиране. За да заработи сервиза в няколко API извиквания той се регистрира пред Service Control Manager, като подава и нужните си за работа атрибути.