ПредишенСледващото

Създаване на Windows C # услуги (услуги)

Windows услуга (Windows NT услуги) - процеси с единен интерфейс за взаимодействие с операционни системи Windows NT серия. Услуги са разделени на два вида - Win32 услуги, взаимодействие с операционната система, чрез управителя на контролния услуга (Control Мениджър ползване - SCM) и шофьори, работещи на драйвера на устройство протокол (наричани, това е Win32 услуги). Service работи във фонов режим, и тяхната работа е скрит от потребителя. Като такива, те са идеални за изпълнение на сървърни процеси в клиент-сървър архитектура, мрежови услуги на, програми и изпълними програми за мониторинг спорадично.

За създаване на услуга в VS .NET, е необходимо:

Създаване на проектни решения услуга със специален шаблон Visual C # проекти - Windoes Service.

Напиши функционален код и код на събитието OnStart и OnStop.

Създаване на инсталатори за служба (ProjectInstaller - за процеса на инсталиране и ServiceInstaller - за дадена услуга или услуги по проекта).

Създаване на изпълним файл.

Създаване на проект за настройка.

Инсталиране и активиране на услугата.

В меню файла VS .NET vyberaem и нов проект. В диалоговия прозорец Видове Нов проект Проект, изберете Visual C # Проекти, шаблон - Windows Service, да зададете името, например, MyFirstServicee, местоположение - посочва директорията, където проектът ще генерира.

AssemblyInfo.cs файла "преместени" в папката на имоти.

streamlive на сайта на проекта

Фиг.1. Създаване на проекта за решение

На този етап, ние се интересуваме от файл с име Service1.cs. Service - име на проекта на System.ServiceProcess.ServiceBase клас клас, наследник.
използване на системата;
използване System.Collections.Generic;
използване System.ComponentModel;
използване System.Data;
използване System.Diagnostics;
използване System.ServiceProcess;
използване System.Text;
пространство от имена MyFirstService
обществен служба1 клас. ServiceBase
.

Класът съдържа конструктор, основната функция и методи OnStart и OnStop. OnPause () методи и OnContinue () също могат да бъдат включени в проекта (техния код може да бъде приложена на ръка, но методите не са задължителни).
// конструктор
обществен служба1 ()
InitializeComponent ();
>
статично невалидни Main ()
>
защитен замяна невалидни OnStart (низ [] опцията)
// код, за да бъдат изпълнени в началото на процеса
>
защитен замяна невалидни OnStop (низ [] опцията)
// Код изпълнена по време на процеса на спиране
>

В контекстното меню на форма дизайнер (раздела Project Service1.cs [Design], нали кликване на мишката), изберете елемента Пропъртис (ако раздела не се вижда - кликнете два пъти с мишката върху името на файла, в Servece1.cs Solutation Explorer). Задайте свойства (Фигура 2.):
- SERVICENAME (наименование на проекта) - MyFirstService,
- Autolog - Вярно.

streamlive на сайта на проекта

Фиг.2. свойства Монтаж на услуги

Тук можете да промените показваното име на услуга (SERVICENAME имота) на.

В този проект за решение, услугата е създадена.

Писане функционален код услуга

С цел да се гарантира, че нашата работа услуга, чиято задача е писане на някои лог файл или какъв вид информация при стартиране и спиране. За да направите това:

пространство от имена ще добави:
използване System.IO;

Декларирам в StreamWriter клас служба1:
частен StreamWriter файл;

Манипулатори на събития кодове, написани, както следва:
защитен замяна невалидни OnStart (низ [] опцията)
// файла по подразбиране ще бъде създаден в "C: # 92; Winnt # 92; System32 # 92;"
файл = нов StreamWriter (нова FILESTREAM ( "MyFirstService.log",
System.IO.FileMode.Append));
this.file.WriteLine ( "MyFirstService започна");
this.file.Flush ();
>
защитен замяна невалидни OnStop ()
this.file.WriteLine ( "MyFirstService спря");
this.file.Flush ();
this.file.Close ();
>

По-късно ще добавим към нашата услуга, различна функционалност.

В раздела Service1.cs [Design] обадя отново контекстното меню и кликнете върху Добавяне Instaler. Проектът се добавя към компонент клас, съдържащ два Installer:
- ProjectInstaller - работата на инсталацията и
- ServiceInstaller - за процеса на инсталация, свързана с услугата.

ServiceInstaller1 за показване на свойствата (Properties от контекстното меню) и питам:
- SERVICENAME - MyFirstService,
- ServerType - Автоматично.

За ServiceProcessInstaller1 зададена стойност в LocalSystem сметка (фиг.3.).


streamlive на сайта на проекта

Създаване на изпълним файл за услугата

В Solution Explorer, изберете Properties за възела на MyFirstServices. В диалоговия прозорец, изберете раздела за кандидатстване. За един елемент, за да изберете Startup обект падащия списък MyFirstService.Programm на (фиг.4.).

streamlive на сайта на проекта

Фигура 4. Задаване на имоти за програмата за инсталиране

В контекста на менюто възел MyFirstServices изберете Build. След това, проектът е изграден и директория проект OBJ # 92; отстраняване на грешки или OBJ # 92; ще се формира освобождаване MyFirstService.exe файла. Въпреки това, е опит да се изпълнява това ще доведе до издаването на съобщението (фиг.5.):

Фигура 5. Необходимостта да се инсталира услугата

Създаване на проект за инсталиране на услуга

От менюто File изберете Добавяне на проекта и нов проект. В диалоговия прозорец Добавяне на нов проект, при Видове прозорец Project, изберете раздела Други Проект Видове клон Настройка и внедряване в шаблони прозорец - Проект за настройка, ние си поставихме за името и мястото - и двата параметри, които не са основни (Фиг.6.).

streamlive на сайта на проекта

Фигура 6. Добавяне на проект за обслужване решение да се определи

проект за настройка се добавя към разтвора, и ние го виждаме в Solutation Explorer.

В допълнение към файл, можем да видим събранието, за да инсталирате "файловата система на Target Machine" (Фигура 7.) файлова система (FirstServices) раздел.

streamlive на сайта на проекта

Фигура 7. Създаване на проект за обслужване решение да се определи

Следващото нещо, което да се направи - е да се определи в инсталационната директория на проекта Windows Service.

Изберете възел файловата система на Target Machine (ако по някаква причина ние не виждаме дървото на папки, можете да го покажете чрез контекст FirstServices менюто възел, щракнете върху Преглед на Take / File System), в своята контекстното меню изберете Добавяне специална папка, както и системната папка. Name System Folder появява възел файловата система на клонове целевата машина на.

В менюто System Folder пряк път, изберете Добави, Проект Output # 92; Основно Output (. Фиг.8).

streamlive на сайта на проекта

Фигура 8. Определяне на директорията на услуга

Изберете командата Изглед към точката на възел FirstServices Действието по избор, в левия прозорец ще се отвори четири възможни действия по подразбиране за монтажника: Инсталирайте, Ангажиране, намаление на цените и Uninstall. За да инсталирате и да ги деинсталирате чрез контекстното меню на параграфа Добавяне на специален действие и посочете папката System (фиг. 9).

streamlive на сайта на проекта

Фигура 9. Формулирането на действия инсталатор

На практика ние сме идентифицирали не само действието, но също така и че целта на това действие - Основно изход от MyFirstService (Active). звената за данни на действията на потребителите (инсталиране и деинсталиране) ще бъдат добавени към главния изход на файла на проекта. Имотите могат да се променят за CustomInstaller файл, за да е вярно информира инсталатора, който използва инсталационната клас (фигура 10).

streamlive на сайта на проекта

Фигура 10. Формулирането на действия инсталатор

Сега можете да се изгради инсталатор проект, като се обадите FirstServices възел Solutation Explorer кликване Build.

За да инсталирате услугата Solutation Explorer, изберете Project Setup (FirstServices) Инсталирайте от контекстното меню. В резултат на това тя ще се стартира съветника за инсталиране. Във втория етап от работата му задаваме системната папка на Windows - C: # 92; WINDOWS # 92; system32 # 92;. След приключване на работа Setup Wizard услуга ще бъде инсталиран.

За стартиране и спиране на услугата ще се отвори за контрол на ръководителя на служба (в Windows XP - Start / ПРОГРАМА / Administrative Tools / Услуги). Името на нашата услуга MyFirstService ще се появи в прозореца на услугите, както и по обичайния начин, за да започнете нашата услуга чрез опцията в контекстното меню Start (в допълнение, услугата ще се стартира автоматично, когато компютърът е претоварена).

Нашата услуга (услуга) е създал Service1.log файла на "C: # 92, # 92 прозорци; System32 # 92; и се извършва в запис за моя старт При спиране на стажа ще се извършва отново ..

Service може да се инсталира и отстранява с помощта на setup.exe файлове и FirstServices.msi, че след изграждането на инсталатора намира в директорията, където проектът е създаден от инсталатора в този пример, C: # 92;. # 92; # 92 FirstService; на Debug # 92; и, освен това, тези два файла е да инсталирате услугата от произволна директория на всеки компютър.

На този етап, ние сме извършва всички необходими стъпки и са тествали нашата услуга в работата. Освен това, може да се изгради по проекта в режим на освобождаване на (меню, Конфигурация на мениджъра, на излизане Build). setup.exe и FirstServices.msi, след изграждането на инсталатора ще се намира в C: # 92. # 92; FirstServices # 92; бин # 92; Release). Освен това е възможно да се запълни функционалността на услугата по своему.

Услугата се извършва дистанционно от компютър като редовна заявка Windows - (Настройки / Контролен панел / Добавяне на премахване на програми).

За да зададете един прост механизъм избирателна, можете да използвате System.Timers.Timer компонента. При метода на OnStart, можете да зададете параметрите на компонента. Таймерът ще периодично някакво действие в кода (например запис от текущия час файл, както е показано по-долу). Кодът се добавят само Таймер компонент и манипулатор на събитие за извършване на някои действия след определен имот timer1.Interval време.
пространство от имена MyFirstService
обществен служба1 клас. ServiceBase
частен StreamWriter файл;
// Дефиниране на таймер
частен System.Timers.Timer таймер 1;

защитен замяна невалидни OnStart (низ [] опцията)

файл = нов StreamWriter (нова FILESTREAM ( "Service1.log",
System.IO.FileMode.Append));
this.file.WriteLine ( "MyFirstService започна");
this.file.Flush ();
// Създаване на таймер и задайте параметрите му
this.timer1 = нов System.Timers.Timer ();
this.timer1.Enabled = вярно;
// интервал 10000ms - 10s.
this.timer1.Interval = 100,000;
this.timer1.Elapsed + =
нов System.Timers.ElapsedEventHandler (this.timer1_Elapsed);
this.timer1.AutoReset = вярно;
this.timer1.Start ();
>

защитен замяна невалидни OnStop ()
this.timer1.Stop ();
this.file.WriteLine ( "MyFirstService спря");
this.file.Flush ();
this.file.Close ();
>
частен невалидни
timer1_Elapsed (обект подател, System.Timers.ElapsedEventArgs д)
// Напиши време да подаде или правите каквото искаме
this.file.WriteLine (DateTime.Now.ToString ( "DD.MM.YYYY ЧЧ: мм: сс"));
this.file.Flush ();
>

Подкрепете проекта - споделете линка, благодаря!