Windows szolgáltatás létrehozása VB.NET
környezet:. Net, Visual Basic
Bevezetés
olyan alkalmazást szeretne írni, amely folyamatosan figyeli a fájlokat, naplót hoz létre, vagy bármi mást, és amely folyamatosan fut a háttérben, miközben a gép valami mással van elfoglalva. Ennek legjobb módja a Windows alkalmazás folyamatos vagy rendszeres időközönként történő futtatása volt a Windows ütemező használatával. De volt egy nagy hátrány: valakinek be kellett jelentkeznie a rendszerbe az alkalmazás elindításához.
ez már nem jelent problémát, mert mindennek a legjobb módja egy Windows szolgáltatás létrehozása A Windows 2000/Windows NT rendszerhez.
mi a Windows szolgáltatás (korábban NT szolgáltatás)?
A Windows szolgáltatás alapvető funkciója egy alkalmazás futtatása a háttérben. Néhány dolog, ami megkülönbözteti őket a Windows alkalmazástól, az, hogy a Windows szolgáltatás elindul, mielőtt bármely felhasználó bejelentkezik a rendszerbe (ha úgy van beállítva, hogy elinduljon a rendszerindításkor). A szolgáltatás úgy állítható be, hogy a felhasználónak manuálisan kell elindítania.
A Windows szolgáltatásnak is van saját folyamata; ezért nagyon hatékonyan fut. Normális esetben a Windows szolgáltatásnak nem lesz felhasználói felülete azon egyszerű okból, hogy akkor is futtatható, ha senki nincs bejelentkezve a rendszerbe. Ez nem szabály; továbbra is rendelkezhet Windows szolgáltatással felhasználói felülettel.
Windows 2000 rendszerben a számítógépen futó összes szolgáltatást a Vezérlőpult, a Felügyeleti eszközök menüpont megnyitásával, majd a Szolgáltatások parancsra kattintva tekintheti meg.
Windows szolgáltatás létrehozása a VB.NET
a VB előtt.NET, A Windows szolgáltatás létrehozása sok munka volt. Valamilyen rendszerszintű eljárást kellett használnia, amely nem volt túl könnyű, de hála VB.NET ez nagyon könnyű lett. Most megtanuljuk, hogyan lehet létrehozni egy Windows szolgáltatást.
tudnia kell néhány dolgot, mielőtt belemerülünk. A Windows szolgáltatás nem érhető el Windows 95, 98 vagy ME rendszerben. A szolgáltatások futtatásához Windows NT vagy Windows 2000 rendszerre van szükség.
a. net használatának előnye, hogy a keretrendszer magában foglalja az összes osztályt. Ez segít létrehozni, telepíteni és irányítani a Windows szolgáltatást.
nyissa meg a Visual Studio alkalmazást .NET, hozzon létre egy új Windows szolgáltatási projektet, amelyet MyService-nek hívunk, majd kattintson az OK gombra.
adja hozzá az időzítő vezérlőt az összetevők lapon található eszköztárból. A Timer1 tulajdonságok ablakában módosítsa az intervallum tulajdonságot 10000-re, ami 10 másodperc.
a forráskód
kattintson duplán a Timer1 vezérlőre a Timer1_Elapsed kódablak megnyitásához, és írja be a következő kódot. (Ezt a kódot 10 másodpercenként kell végrehajtani.)
Dim MyLog As New EventLog() ' create a new event log ' Check if the the Event Log Exists If Not MyLog.SourceExists("MyService") Then MyLog.CreateEventSource("MyService", "Myservice Log") ' Create Log End If MyLog.Source = "MyService" ' Write to the Log MyLog.WriteEntry("MyService Log", "This is log on " & _ CStr(TimeOfDay), _ EventLogEntryType.Information)
írja be a következő kódot az OnStart eljárásba. (Ezt az eljárást hívják, amikor elindítja a szolgáltatást, amely lehetővé teszi az időzítőt.)
Timer1.Enabled = True
írja be a következő kódot az OnStop eljárásba. (Ezt az eljárást akkor hívják meg, amikor leállítja a szolgáltatást, amely letiltja az időzítőt.)
Timer1.Enabled = False
alkalmazásunk készen áll, de néhány dolgot még meg kell tenni, mielőtt továbblépnénk. Amikor elkészítjük ezt az alkalmazást, a létrehozott futtatható fájl nem Windows alkalmazás; ezért nem csak rákattinthat és futtathatja. Szolgáltatásként kell telepíteni, de ne aggódjon; nem kell manuálisan megtennünk. VB.A Net rendelkezik egy telepítővel a programunkhoz, majd egy segédprogrammal telepítheti a szolgáltatást.
telepítő hozzáadása a projekthez
nyissa meg a Szolgáltatást1.vb design ablakban kattintson a jobb gombbal, majd válassza a telepítő hozzáadása opciót. Ez hozzáad egy telepítőprojektet, a ProjectInstaller programot.vb, két vezérlővel, ServiceProcessInstaller1 és ServiceInstaller1, meglévő projektünkben.
válassza ki a ServiceInstaller1 vezérlőt, majd nyissa meg a tulajdonság ablakot. Módosítsa a ServiceName és DisplayName tulajdonságokat MyService értékre. (Ezt a nevet szeretné megjeleníteni a szolgáltatások listájában a szolgáltatások ablakokban.)
válassza ki a ServiceProcessInstaller1 vezérlőt, majd nyissa meg a tulajdonság ablakot. Módosítsa a fiók tulajdonságát LocalSystem értékre. (Ezt meg kell adni, mert ezt a helyi gépen kell futtatnunk.)
most itt az ideje, hogy építeni az alkalmazást, és hozzon létre egy futtatható. Válassza a Build Solution lehetőséget a Build menüből, hogy létrehozzon egy futtatható fájlt a szolgáltatás telepítési utasításaival.
a szolgáltatás telepítése
a szolgáltatás telepítéséhez a Windows szolgáltatás telepítéséhez az InstallUtil programot kell használnunk, amely egy.NET segédprogram. Ezt megtalálja a mappában C:\WINNT\Microsoft.NET\Framework\v1.0.3705. (ez a számítógépen eltérő lehet, a használt verziótól függően.)
Alternatív megoldásként futtathatja a.net parancsablakot a Start, Programok, Microsoft Visual Studio. Net, Visual Studio. Net eszközök, Visual Studio. Net Parancssor kiválasztásával. Ez beállítja az összes szükséges útvonalat az Ön számára.
írja be a következő parancsot az ablakba: InstallUtil C:\tgol\Myservice\Bin\Myservice.exe. (Ez az elérési út az imént létrehozott szolgáltatás futtatható fájljához. Ne feledje, VB.NET létrehozta a végrehajtható fájlt A Bin mappában a projekt mappa alatt. Kérjük, győződjön meg róla, hogy ezt a végrehajtható elérési útra változtatja.) Kérjük, nézze meg az üzenetet és jelentkezzen be, hogy megbizonyosodjon arról, hogy a szolgáltatás megfelelően van telepítve.
a szolgáltatás indítása
egy szolgáltatás futtatása és egy szolgáltatás indítása két különböző dolog. Amikor telepítjük a szolgáltatást az InstallUtil segítségével, most futtatjuk a szolgáltatást, de még nem indítottuk el. A szolgáltatás megtekintéséhez és elindításához nyissa meg a Vezérlőpultot. Nyissa meg a Felügyeleti eszközök elemet, kattintson a Szolgáltatások elemre, keresse meg a MyService elemet, kattintson a jobb gombbal, majd válassza a Start lehetőséget a szolgáltatás elindításához.
most megkezdődött a szolgáltatásunk. Nyissa meg az Eseménynaplót a felügyeleti eszközökből, majd kattintson az Alkalmazásnaplóra a szolgáltatás (MyService) által létrehozott naplók 10 másodpercenként történő megtekintéséhez. (Ha nem lát naplókat, kattintson a Frissítés gombra . A legfrissebb eseménynaplók megtekintéséhez folyamatosan frissítenie kell.
a szolgáltatás leállítása
nyissa meg a Vezérlőpultot, nyissa meg a felügyeleti eszközöket, kattintson a Szolgáltatások elemre, kattintson a jobb gombbal a MyService elemre, majd válassza a Leállítás lehetőséget a szolgáltatás leállításához.
a szolgáltatás eltávolítása
ez az eljárás hasonló a szolgáltatás telepítéséhez, de most futtatjuk az InstallUtil – t a / U paraméterrel, amely eltávolítja a szolgáltatást:
InstallUtil / U C:\tgol\Myservice\Bin\Myservice.exe (vagy futtatható elérési út a számítógépen). Kérjük, nézze meg az üzenetet, hogy megerősítse a szolgáltatás megfelelő eltávolítását.
tippek
- a szolgáltatás telepítése/eltávolítása előtt állítsa le a szolgáltatást, majd zárja be a Szolgáltatásablakot.
- mindig távolítsa el/telepítse, ha bármilyen módosítást végez a szervizalkalmazásban.
- próbálja meg elkerülni a felhasználói felületet, a bemeneteket és az msgbox-ot a szolgáltatási alkalmazásban.
- Nyissa Meg A ProjectInstaller Programot.vb, válassza a ServiceInstaller1 control lehetőséget, majd nyissa meg a tulajdonság ablakot. Módosítsa a StartType tulajdonságot Automatic értékre, ha automatikusan szeretné elindítani a szolgáltatást.
következtetés
A Windows szolgáltatást gyakran figyelmen kívül hagyják. Használja a Windows szolgáltatást a szokásos alkalmazás helyett, ha valamit a háttérben kell figyelnie vagy adminisztrálnia. Az egyetlen hátrány a telepítési eljárás, de fogadok, hogy több pozitív szempont van, mint negatív, amikor a Windows szolgáltatást választja a Windows ütemezőt futtató alkalmazások felett.