Avatar billede dna Nybegynder
23. april 2005 - 01:56 Der 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! :-)

På forhånd tak!

dna
Avatar billede lifo Nybegynder
23. april 2005 - 23:35 #1
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
Avatar billede dna Nybegynder
24. april 2005 - 12:06 #2
Hej lofo.

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 ?

dna
Avatar billede burningice Nybegynder
26. april 2005 - 09:23 #3
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.
Avatar billede dna Nybegynder
26. april 2005 - 09:27 #4
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?

Tak for jeres svar.

dna
Avatar billede burningice Nybegynder
26. april 2005 - 09:41 #5
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)
Avatar billede dna Nybegynder
26. april 2005 - 09:45 #6
...dvs, jeg skal have servicen startet med SYSTEM-kontoen? (Ellers kan man ikke vælge dette punkt jo)

Så burde alle de brugere der logger ind kunne se det? (Er ikke vigtigt at det er alle, men bare at 1 i det mindste kan!)

dna
Avatar billede burningice Nybegynder
26. april 2005 - 09:58 #7
ja, Local System Account skal bruges.
Avatar billede dna Nybegynder
26. april 2005 - 10:04 #8
Jeg prøver at rode med det.. tak for hjælpen indtil videre!

dna
Avatar billede hvideg Nybegynder
27. juni 2005 - 00:46 #9
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.
Avatar billede dna Nybegynder
14. februar 2006 - 13:25 #10
Nogen som vil have point.. ellers lukker jeg ned?

dna
Avatar billede burningice Nybegynder
29. marts 2006 - 19:31 #11
beholdt du dem bare
Avatar billede hvideg Nybegynder
30. marts 2006 - 16:26 #12
Ø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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester