23. april 2005 - 01:56Der er
11 kommentarer og 1 løsning
Mit program som service (Med GUI!)
Hejsa alle!
Jeg er kommet i den situation, at jeg godt kunne tænke mig at et program jeg har udviklet skulle smides ind som en (NT) service. Dette havde jeg vist ikke lige tænkt igennem fra starten af, da jeg nu er i tvivl om hvor vidt, det kan lade sig gøre?
Problemet er ikke så meget at få .exe filen til at køre som service, men kan jeg gøre sådan, at når man så logger ind på windows, så er programmet synligt for brugeren, så han kan bruge GUI´en og manipulere programmet?
Skulle jeg havde haft programmet opdelt i en "service" og en "gui" som connectede til hinanden fra starten af, eller kan det stadig lade sig gøre?
Håber I forstår mit spørgsmål.. ellers må I lige skrive! :-)
sådan programerede jeg også altid indtil for nyligt nu laver jeg altid minst 2 projekter i samme solution 1 til GUI og 1 til backend eller hvad man kalder det og måske nogle ved siden af som kun bliver refereret til som dll (hjælpe funktioner aom jeg altid bruger )
men det med komunikation til din service så har jeg selv brugt flere metode både socket'e, Remoting og webservices men vil anbefallle Remoting det kan være meget simpelt
om du ikke har for meget funktionalitet i din gui så skulle det ikke være så svært at dele op
Tak for svaret. Mit program har allerede remoting, da det er en server, der skal køre med nogle klienter, så er måske ikke så meget arbejde at lave det om. Ville bare høre om det var NØDVENDIGT at lave om, når det nu skal køre som en service, eller om man godt kunne have sit almindelige program kørende som service, og så stadig tilgå GUI´en ?
i teorien kan du godt lade et hvilket som helst program køre som service, det er bare at registrere det i windows som et. Dog er det ikke særlig pænt at lade et GUI-program agere som service, da det jo er noget der skal køre i baggrunden uden kontakt med brugeren. Og vil man kunne gå ind og indstille noget i servicen bør man lave en GUI-frontend der komunikerede med sin service.
Ok.. tror desværre så, at jeg må skrive mit program om! Men, hvis man skal have et "GUI-program" til at køre som service, og være synligt for alle de brugere der logger på windows-boxen.. nogen idé om hvordan man gør det?
som sådan er den eneste forskel på en service og et normal program, den at windows automatisk sørger for at starte servicen under opstart, dvs. før at en bruger logger på maskine, hvorimod et normal program kun kan køre når der er logget en bruger ind i windows.
Så hvis du har et program der bare lægger et lille NotifyIcon nede i systray ved opstart, så burde det være nok, og du burde kunne køre programmet som en service. Du skal forresten lige huske at sørge for at servicen skal kunne agere med brugeren (allow service to interact with desktop)
En .Net Windows service har ikke nogen grafisk brugergrænseflade. Så ingen kan ændre i noget, du skal bruge enten opsætnings xml eller windows registreringsdatabasen til de informationer som skal støtte en service.
Hvis du har brug for en grafisk brugergrænseflade så lav en windows application eller et web application projekt.
Øh, havde lidt glemt denne tråd. Altså hvis du har lavet det i en .exe er det helt fint, når det virker smider du det om i et nyt projekt, et windows service projekt, siden opretter du et nyt projekt i samme solution fil, en installer, lader den installere, som burningice kommenterer som system. Hvad mener du med at det skal være synligt? Brugerne kan se det under services, der vil den få status 'running' Hvis der skal være et monitorerings program, så skal du inkludere et API til at servicen kan svare fornuftigt, eller lade UI interagere med servicens data grundlag, så den gør det indirekte. Public methods er vel typisk det du vil have svar fra, i et opsætnings program og status? Det er ret usædvanligt at give brugere adgang til en service direkte. Men eksempler som Enterprise manager til SQL server service og IIS manger til IIS service findes naturligvis. Så svaret er ja, du skal pakke det i to forskellige programmer, eller 3 projekter, lade install projektet modtage standard output fra servicen, dernæst kan du installere hele baduljen. Mere normalt er det at lade servicen kommunikere igennem event handler og så tilgå de distribuerede event logs fra en central administrator computer. Det beror jo igen på hvilken type data servicen håndterer. En rimelig overvejelse er hvoror du vil lave det til en service? Hvis der er brug for direkte slutbruger interaktion, skal det måske netop være et program, som du startede med at vælge. Den kan så blot installeres til windows maskinens START folder, så starter den fint hver gang de logger på, eller startes fra NT4 login script.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.