crearea unui serviciu Windows în VB.NET
mediu:. net, Visual Basic
Introducere
doriți să scrie o aplicație care monitorizează în mod constant unele fișiere, creează un jurnal, sau orice altceva, și unul care a fugit în mod constant în fundal în timp ce aparatul este ocupat face altceva. Cel mai bun mod de a face acest lucru a fost să rulați o aplicație Windows continuu sau la un interval regulat cu utilizarea planificatorului Windows. Dar a existat un mare dezavantaj: cineva a trebuit să se conecteze la sistem pentru a porni această aplicație.
aceasta nu mai este o problemă, deoarece cel mai bun mod de a face toate acestea este să creați un serviciu Windows Pentru Windows 2000/Windows NT.
ce este serviciul Windows (denumit anterior serviciu NT)?
funcția de bază a unui serviciu Windows este de a rula o aplicație în fundal. Câteva lucruri care le fac diferite de o aplicație Windows sunt că un serviciu Windows pornește înainte ca orice utilizator să se conecteze la sistem (dacă a fost configurat să înceapă la pornire). Serviciul poate fi configurat astfel încât să solicite utilizatorului să îl pornească manual.
de asemenea, serviciul Windows are propriul proces; prin urmare, rulează foarte eficient. În mod normal, un serviciu Windows nu va avea o interfață de utilizator pentru simplul motiv că poate fi rulat chiar dacă nimeni nu este conectat la sistem. Aceasta nu este o regulă; puteți avea în continuare un serviciu Windows cu o interfață de utilizator.
în Windows 2000, puteți vizualiza toate serviciile care rulează pe computer deschizând Panou de Control, Instrumente de Administrare, apoi făcând clic pe servicii.
crearea unui serviciu Windows în VB.NET
înainte de VB.NET, crearea unui serviciu Windows a fost o mulțime de muncă. A trebuit să utilizați o procedură la nivel de sistem care nu a fost foarte ușoară, dar datorită VB.NET acest lucru a devenit foarte ușor. Acum vom învăța cum să creăm un serviciu Windows.
ar trebui să știi câteva lucruri înainte să ne scufundăm. Serviciul Windows nu este disponibil în Windows 95, 98 sau ME. Trebuie să aveți Windows NT sau Windows 2000 pentru a rula servicii.
avantajul utilizării.net este că cadrul încorporează toate clasele. Acest lucru ne va ajuta să creăm, să instalăm și să controlăm serviciul Windows.
deschideți Visual Studio .NET, creați un nou proiect de servicii Windows, pe care îl vom numi MyService, apoi faceți clic pe OK.
adăugați controlul temporizatorului din bara de instrumente din fila Componente. În fereastra Proprietăți a Timer1, modificați proprietatea Interval la 10000, care este de 10 secunde.
codul sursă
faceți dublu clic pe controlul Timer1 pentru a deschide o fereastră de cod pentru Timer1_Elapsed și tastați următorul cod. (Acest cod se execută la fiecare 10 secunde.)
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)
tastați următorul cod în procedura OnStart. (Această procedură este apelată atunci când porniți serviciul, care va activa cronometrul.)
Timer1.Enabled = True
și tastați următorul cod în procedura OnStop. (Această procedură este apelată atunci când opriți serviciul, care va dezactiva cronometrul.)
Timer1.Enabled = False
aplicația noastră este acum gata, dar mai trebuie făcute câteva lucruri înainte de a merge mai departe. Când construim această aplicație, executabilul creat nu este o aplicație Windows; prin urmare, nu puteți doar să faceți clic și să o rulați. Trebuie instalat ca serviciu, dar nu vă faceți griji; nu trebuie să o facem manual. VB.Net are o facilitate pentru a adăuga un program de instalare la programul nostru și apoi utilizați un utilitar pentru a instala serviciul.
adăugarea programului de instalare la proiect
deschideți Service1.fereastra de proiectare vb și faceți clic dreapta și apoi selectați opțiunea Adăugare Instalator. Aceasta adaugă un proiect de instalare, ProjectInstaller.vb, cu două controale, ServiceProcessInstaller1 și ServiceInstaller1, în proiectul nostru existent.
selectați controlul ServiceInstaller1 și deschideți fereastra de proprietăți. Modificați proprietățile ServiceName și DisplayName la MyService. (Acesta este numele pe care doriți să apară în lista de servicii din Windows Services.)
selectați controlul ServiceProcessInstaller1 și deschideți fereastra de proprietăți. Modificați proprietatea contului la LocalSystem. (Acest lucru trebuie să fie specificate pentru că avem nevoie pentru a rula acest lucru pe mașina noastră locală.)
acum este timpul să construim aplicația și să creăm un executabil. Selectați Build Solution din meniul Build pentru a crea un executabil cu instrucțiuni de instalare pentru serviciu.
instalarea serviciului
pentru a instala acest serviciu, trebuie să folosim programul InstallUtil, care este un utilitar.net, pentru a instala serviciul Windows. Puteți găsi acest lucru în dosar C:\WINNT\Microsoft.NET\Framework\v1.0.3705. (acest lucru poate fi diferit pe computer, în funcție de versiunea pe care o utilizați.)
alternativ, puteți rula fereastra de comandă.net selectând Start, Programe, Microsoft Visual Studio. net, Visual Studio. net Tools, Visual Studio. net Command Prompt. Aceasta stabilește toate căile necesare pentru dvs.
tastați următoarea comandă în acea fereastră: InstallUtil C:\tgol\Myservice\Bin\Myservice.exe. (Aceasta este calea pentru executabilul serviciului pe care tocmai l-am creat. Amintiți-vă, VB.NET a creat executabilul în folderul Bin sub folderul project. Asigurați-vă că schimbați acest lucru pe calea executabilă.) Vă rugăm să priviți mesajul și jurnalul pentru a vă asigura că serviciul este instalat corect.
pornirea serviciului
rularea unui serviciu și pornirea unui serviciu sunt două lucruri diferite. Când instalăm serviciul cu InstallUtil, acum executăm serviciul, dar încă nu l-am pornit. Pentru a vizualiza și porni serviciul, deschideți Panoul de Control. Deschideți Instrumente Administrative, Faceți clic pe servicii, Localizați MyService, faceți clic dreapta și selectați Start pentru a porni acest serviciu.
acum serviciul nostru a început. Deschideți vizualizatorul de evenimente din Instrumente Administrative și faceți clic pe Jurnalul de aplicații pentru a vedea jurnalele create de serviciu (MyService) la fiecare 10 secunde. (Dacă nu vedeți niciun jurnal, faceți clic pe Reîmprospătare . Va trebui să păstrați răcoritoare pentru a vedea cele mai recente jurnalele de evenimente.
oprirea serviciului
deschidere Panou de Control, deschidere Instrumente Administrative, Faceți clic pe servicii, Faceți clic dreapta pe MyService și selectați Stop pentru a opri serviciul.
Dezinstalarea serviciului
această procedură este similară cu instalarea serviciului, dar acum vom rula parametrul InstallUtil cu / U, care dezinstalează serviciul:
InstallUtil / U C:\tgol\Myservice\Bin\Myservice.exe (sau cale executabilă pe computer). Vă rugăm să consultați mesajul pentru a confirma că serviciul este dezinstalat corect.
sfaturi
- opriți serviciul și închideți fereastra de serviciu înainte de a instala/dezinstala serviciul.
- dezinstalați/instalați întotdeauna dacă efectuați modificări la aplicația de serviciu.
- încercați să evitați interfața cu utilizatorul, intrările și msgbox în aplicația Service.
- Deschideți ProjectInstaller.vb, selectați ServiceInstaller1 control și deschideți fereastra de proprietăți. Schimbați proprietatea StartType La automat dacă doriți să porniți serviciul automat.
concluzie
serviciul Windows este adesea trecut cu vederea. Utilizați serviciul Windows în locul unei aplicații standard atunci când trebuie să monitorizați sau să administrați ceva în fundal. Singurul dezavantaj este procedura de instalare, dar pariez că există mai multe aspecte pozitive decât negative atunci când selectați serviciul Windows peste aplicațiile care rulează Windows Scheduler.