A projekt webhely áramlása

Windows C # szolgáltatások (szolgáltatások) létrehozása

Windows szolgáltatás (Windows NT szolgáltatások) - folyamatok egységes felületet kölcsönhatásba lépnek az operációs rendszerek Windows NT sorozat. A szolgáltatások két csoportra oszthatók - Win32 szolgáltatások, kölcsönhatásban az operációs rendszer révén a Service Control Manager (Service Control Manager - SCM), valamint a járművezetők futó protokoll eszközmeghajtó (a továbbiakban, ez egy Win32 szolgáltatások). A szolgáltatások a háttérben futnak, és munkájukat a felhasználó elrejtette. Mint ilyen, ezek ideális kiszolgálótükrözést folyamatok egy kliens-szerver architektúra, a hálózati szolgáltatások, ellenőrzési programok és futtatható programok szórványosan.







Szolgáltatás létrehozása a VS.NET-ben:

Hozzon létre szolgáltatás-megoldási tervet a speciális Visual C # Projects sablon segítségével - Windoes Service.

Írja be a funkciókódot és az eseménykódot OnStart és OnStop.

Telepítõk létrehozása a szolgáltatáshoz (ProjectInstaller - a folyamat telepítéséhez és a ServiceInstallerhez a projektszolgáltatáshoz vagy szolgáltatásokhoz).

Futtatható fájl létrehozása.

Hozzon létre egy telepítési projektet.

Telepítse és aktiválja a szolgáltatást.

A File VS .NET menüben válassza az Új és a Projekt lehetőséget. A New Project Project Types párbeszédablakban válassza ki a Visual C # Projects, Template - Windows Service, kérje a neve, például MyFirstServicee, Hely - meghatározza azt a könyvtárat, ahol a projekt generál.

A AssemblyInfo.cs fájl "költözött" a Tulajdonságok mappába.

A projekt webhely áramlása

1. ábra. Szolgáltatási megoldási terv kidolgozása

Ebben a szakaszban érdekel egy Service1.cs nevű fájl. Service - a projekt osztály neve, a System.ServiceProcess.ServiceBase osztály utódja.
a Rendszer használatával;
a System.Collections.Generic;
a System.ComponentModel használatával;
System.Data;
System.Diagnostics;
a System.ServiceProcess használatával;
a System.Text használatával;
névtér MyFirstService
nyilvános osztályú szolgálat1. ServiceBase
.

Az osztály tartalmazza az osztály konstruktort, a fő funkciót és az OnStart és OnStop módszerek funkcióit. Az OnPause () és az OnContinue () módszerek is felvehetők a projektbe (kódjuk manuálisan hozzáadható, de a módszerek nem kötelezőek).
// Osztályépítő
közszolgálat1 ()
InitializeComponent ();
>
statikus üres Main ()
>
védett felülírás érvénytelen OnStart (string [] args)
// A folyamat elején végrehajtott kód
>
védett felülbírálás érvénytelen OnStop (string [] args)
// a folyamat leállításakor végrehajtott kód
>

A helyi menüben az űrlap tervező (Project fül Service1.cs [Design], jobb egérgomb), válassza ki a Tulajdonságok menüpontot van (ha a lap nem látható - kattintson duplán az egérrel a fájl nevét a Servece1.cs Solutation Explorer). Állítsa be a tulajdonságokat (2. ábra):
- ServiceName (projekt neve) - MyFirstService,
- AutoLog - Igaz.

A projekt webhely áramlása

2. ábra. A szolgáltatás tulajdonságainak beállítása

Itt módosíthatja a szolgáltatás megjelenítési nevét (ServiceName tulajdonság).

Ezen a projekten létrejön a szolgáltatási megoldás.

Szolgáltatási funkciókód írása

Annak érdekében, hogy a szolgáltatásunk működjön, hozzárendeljük neki a feladatot egyes naplófájlok megírásához az indításnál és a leállításnál. Ehhez:

Adjunk hozzá egy névteret:
a System.IO használatával;

Kijelentjük a Service1 StreamWriter osztályban:
privát StreamWriter fájl;

Az eseménykezelők kódjai a következőképpen íródnak:
védett felülírás érvénytelen OnStart (string [] args)
// Az alapértelmezett fájl a "C: # 92; Winnt # 92; System32 # 92;"
file = új StreamWriter (új FileStream ("MyFirstService.log",
System.IO.FileMode.Append));
this.file.WriteLine ("MyFirstService elindult");
ez a fájl.Flush ();
>
védett felülírás érvénytelen OnStop ()
this.file.WriteLine ("MyFirstService stop");
ez a fájl.Flush ();
this.file.Close ();
>

Később újabb funkciókat adunk hozzá szolgáltatásunkhoz.

A Service1.cs [Design] fülön ismét felhívjuk a helyi menüt és az Add Installer elemet. A projekthez két telepítőt tartalmazó komponens-osztály tartozik:
- ProjectInstaller - a szolgáltatás telepítése és
- ServiceInstaller - a szolgáltatáshoz kapcsolódó folyamat beállítása.

A ServiceInstaller1 esetében megjelenik a tulajdonságai (a Tulajdonságok helyi menüje), és beállíthatja:
- ServiceName - MyFirstService,
- ServerType - Automatikus.

A ServiceProcessInstaller1 esetében állítsa be a Account értéket a LocalSystem-ban (3. ábra).


A projekt webhely áramlása







Futtatható fájl létrehozása a szolgáltatáshoz

A Solution Explorerben válassza ki a MyFirstServices csomópont tulajdonságait. A párbeszédpanelen válassza az Alkalmazás fület. Az Indító objektumhoz válassza a MyFirstService.Programm legördülő listát (4. ábra).

A projekt webhely áramlása

4. ábra. A telepítőprogram tulajdonságainak beállítása

A MyFirstServices csomópont helyi menüjében válassza a Build parancsot. Ezt követően a projekt beépül a projekt könyvtárba obj # 92, debug vagy obj # 92; kiadja a MyFirstService.exe fájlt. Azonban az indítás megpróbálása egy üzenetet eredményez (5.

5. ábra. Szükség van a szolgáltatás telepítésére

Hozzon létre egy telepítési projektet a szolgáltatáshoz

Kattintson a Fájl menü Projekt hozzáadása és Új projekt parancsára. Az Új projekt párbeszédpanel Project Types ablakban válasszuk ki a fül Egyéb Project Types ág Beállítás és telepítési, a sablonok ablakemelő - Beállítás Project, mi meg a Név és hely - mind a két paraméter nem alapvető (ábra6.).

A projekt webhely áramlása

6. ábra. Service Installation Solution Project hozzáadása

A telepítési projekt hozzá van adva a megoldáshoz, és meglátjuk a Solution Explorerben.

Ezenkívül a File System fülön (FirstServices) láthatjuk a fájlszerkezetet a "File System on Target Machine" (7. ábra) telepítéséhez.

A projekt webhely áramlása

7. ábra. Service Installation Solution Project létrehozása

A következő dolog, hogy meghatározza a telepítendő Windows szolgáltatásprojekt címtárát.

Válassza ki a csomópontot File System Target gép (ha bármilyen okból nem látjuk a fa mappa van, akkor megjeleníti keresztül a helyi menü FirstServices csomópont, kattintson a Nézet Vegye / File System), saját helyi menüben válasszuk az Add külön mappába, és a System Folder. A Rendszer mappa neve megjelenik a Fájlrendszer ágában a célgép csomópontján.

A Rendszer mappa helyi menüjében válassza az Add, Project Output # 92, Primary Output (8. ábra) parancsot.

A projekt webhely áramlása

8. ábra. Határozza meg a szolgáltatás könyvtárát

Válassza ki a Custom Action elem FirstServices csomópontjának Nézet elemét, és a telepítőhöz négy alapértelmezett művelet jelenik meg az ablak bal oldalán: Install, Commit, Rollback and Uninstall. A telepítéshez és az eltávolításhoz a helyi menüben tegye az Egyéni művelet hozzáadása elemet, és adja meg a Rendszer mappát (9.

A projekt webhely áramlása

9. ábra. A telepítő intézkedéseinek meghatározása

A gyakorlatban nem csak a cselekvést, hanem az akció tárgyát is meghatároztuk - a MyFirstService (aktív) elsődleges kimenete. A felhasználói műveletek ezen csomópontjaiban (Telepítés és eltávolítás) a projekt fő kimeneti fájlját adják hozzá. A CustomInstaller fájlban megváltoztatható tulajdonságok esetén az érték igazolja a telepítőnek, hogy a telepítői osztályt használja (10. ábra).

A projekt webhely áramlása

10. ábra. A telepítő intézkedéseinek meghatározása

Most telepítheti a telepítőprojektet a Solution Explorerben az FirstServices csomópontjának Build parancsára.

A szolgáltatás telepítéséhez a Solution Explorerben válassza ki a telepítési projektet (FirstServices), majd kattintson a helyi menü Beállítása parancsára. Ennek eredményeként elindul a Telepítővarázsló. Munkájának második lépésben a Windows rendszer mappáját állítottuk be: C: # 92; WINDOWS # 92; system32 # 92;. Miután befejeződött a telepítővarázsló, a szolgáltatás telepítésre kerül.

A szolgáltatás elindításához és leállításához nyissa meg a Szolgáltatásvezérlő menedzsert (Windows XP - Start / Program / Felügyeleti eszközök / Szolgáltatások). A MyFirstService szolgáltatás neve megjelenik a Services (Szolgáltatás) ablakban, és rendszerint elindíthatja szolgáltatásunkat a helyi menüben (egyébként a szolgáltatás automatikusan megkezdődik, amikor a számítógép túlterhelt).

Szolgáltatásunk létrehozta a Service1.log fájlt a "C: # 92; windows # 92; System32 # 92;" és végrehajtotta a rekordot annak indításakor. Amikor a szolgáltatás leáll, a rekord újra végrehajtásra kerül.

Szolgáltatás telepíthető és eltávolítható a setup.exe fájlt, és FirstServices.msi, hogy azután, hogy a telepítő található a könyvtárban, ahol a projekt által létrehozott telepítő ebben a példában a C: # 92;. # 92; FirstService # 92; Debug # 92; és ezenkívül ez a két fájl elég ahhoz, hogy a szolgáltatást bármilyen számítógép bármelyik könyvtárából telepítse.

Ebben a szakaszban befejeztük az összes szükséges lépést, és munkánk során ellenőriztük szolgáltatásainkat. Ezután kiválaszthatja a projektet (Build, Configuration Manager, Release menü). A setup.exe és a FirstServices.msi a telepítő telepítése után a C: # 92; könyvtárban található. # 92; FirstServices # 92; bin # 92; Kiadás). Ezután lehetőség van a szolgáltatás funkcionalitását saját belátása szerint kitölteni.

A szolgáltatás eltávolítása a számítógéptől hasonló a szokásos Windows alkalmazáshoz - (Beállítások / Vezérlőpult / Add a Programok eltávolítása).

Egy egyszerű lekérdezési mechanizmus beállításához használhatja a System.Timers.Timer összetevőt. Az OnStart módszerben meghatározhatja az összetevő paramétereit. Az időzítő időnként végrehajt néhány műveletet a kódban (például az aktuális időfájlba írása az alábbiak szerint). A kód csak hozzáadta az Időzítő összetevőt és az eseménykezelőt, amely az időzítő1 után végrehajt néhány műveletet. Az időzítő1. Tartalmazza.
névtér MyFirstService
nyilvános osztályú szolgálat1. ServiceBase
privát StreamWriter fájl;
// Határozza meg az időzítőt
privát System.Timers.Timer timer1;

védett felülírás érvénytelen OnStart (string [] args)

file = új StreamWriter (új FileStream ("Service1.log",
System.IO.FileMode.Append));
this.file.WriteLine ("MyFirstService elindult");
ez a fájl.Flush ();
// Hozzon létre egy időzítőt és állítsa be a paramétereit
this.timer1 = új System.Timers.Timer ();
this.timer1.Enabled = igaz;
// 10000ms - 10s intervallum.
this.timer1.Interval = 100000;
ez.timer1.Elapsed + =
új System.Timers.ElapsedEventHandler (this.timer1_Elapsed);
this.timer1.AutoReset = true;
ez.timer1.Start ();
>

védett felülírás érvénytelen OnStop ()
ez.timer1.Stop ();
this.file.WriteLine ("MyFirstService stop");
ez a fájl.Flush ();
this.file.Close ();
>
magánszünet
timer1_Elapsed (objektum feladó, System.Timers.ElapsedEventArgs e)
// Írja le az időt egy fájlnak, vagy tegyen meg mindent, amit akarunk
this.file.WriteLine (DateTime.Now.ToString ("dd.MM.yyyy HH: mm: ss"));
ez a fájl.Flush ();
>