Vra

Ek het 'n paar verskillende c # werker programme wat verskeie deurlopende take uit te voer: stuur e-pos van tou, die invoer van nuwe bestellings van webwerf databasis bestellings databasis, maak databasis rugsteun en herstel, hardloop dataverwerking vir OLTP -> OLAP, en ander verwante take . Voor, vrygestel ek hierdie as vensters dienste, maar op die oomblik het ek vry te laat as gereelde console aansoeke. Hulle is almal gebasseer op 'n gemeenskaplike taak naaswenner raamwerk wat ek gemaak het, en ek is tevrede met wat, maar ek is nie seker wat is die beste manier om hierdie tipe van programme te ontplooi. Ek hou van die konsole weergawe, want dit is vinnig en maklik, en dit is moontlik om vinnig te sien program aktiwiteit en uitset. Die nadeel is dat die werker rekenaar het 'n paar troos skerms hardloop en dit raak vuil. Aan die ander kant lyk die diens metode om te neem om lank te sit en ek het om te gaan deur middel van logs geleentheid om boodskappe te sien. Wat is 'n paar ervarings / kommentaar op hierdie?

Was dit nuttig?

Oplossing

Ek hou van die konsole app benadering. Ek tipies het dinge opgestel, sodat ek kan 'n skakelaar soos -unattended dat die konsole skerm onderdruk slaag.

Ander wenke

Windows Service sal 'n goeie keuse wees, dit loop in die agtergrond maak nie saak of jy die huidige sessie sluit, ook jy kan dit instel om te begin outomaties na Windows weer te begin by die verrigting van 'n kolle update op die bediener. Jy kan belangrike boodskappe te gebeurtenis kyker of databasistabel aanteken.

Vir 'n ding soos hierdie, die standaard manier om dit te doen is met Windows dienste. Jy wil die diens uit te voer op die netwerk rekening, sodat dit nie sal vereis dat 'n aangemeld gebruiker.

Ek het op iets wat 'n paar jaar gelede dat soortgelyke probleme gehad. Logies ek nodig om 'n diens, maar soms nodig ek om te sien wat aan die gang is en oor die algemeen ek wou 'n geskiedenis. So 'n diens wat die werk gedoen het ontwikkel ek, enige tyd wat dit wou teken, is dit genoem om dit te se intekenare (geïmplementeer as 'n waarnemer patroon).

Die diens geregistreer dit se eie data logger (skryf 'n databasis) en te hardloop tyd, kan die gebruiker 'n GUI wat gekoppel is aan die diens gebruik te maak van Remo Ting om 'n lewendige luisteraar raak hardloop!

Ek gaan om te stem vir Windows Services. Dit gaan 'kry om 'n ware pyn wees besturende dié konsole programme.

Windows Service ontplooiing is eenvoudig: nadat die aanvanklike installeer, jy moet net draai dit af en doen 'n xcopy. Nie nodig om enige ingewikkelde installeerders hardloop. Dit is net semi-ingewikkeld die eerste keer, en selfs dan is dit net

installutil MyApp.exe

Configre die dienste uit te voer onder 'n domein rekening vir die beste sekuriteit en maklikste interop met ander masjiene.

Gebruik 'n kombinasie van hout gebeurtenis (met Fout, Waarskuwing, en Inligting) vir belangrike kennisgewings en net stort verbose meld om 'n teks lêer.

Hoekom nie die beste van alle wêrelde te kry en te gebruik iets soos:
http://topshelf-project.com/

Dit sal jou toelaat om jou te laat loop as command line of 'n Windows diens.

Ek is nie seker of dit geld vir jou programme of nie, maar as ek 'n paar konsole programme wat nie afhanklik is van die gebruiker se toevoer of hulle die soort programme wat net hul werk doen en ophou, ek hardloop sulke programme op 'n virtuele bediener, hierdie manier wat ek het nie 'n skerm sien knal wanneer ek werk, en virtuele bedieners is maklik om te skep en weer te begin.

Ons gebruik gereeld vensters dienste as die agtergrond prosesse. Ek hou nie van command-line programme as jy nodig het om te word aangeteken in die bediener vir hulle uit te voer. Dienste uit te voer in die agtergrond al die tyd (as hulle is outomaties begin). Hulle is ook triviaal om te installeer w / die sc.exe opdrag-lyn instrument wat in vensters. Ek hou van dit beter as die opblaas-ware wat installutil.exe. Natuurlik installutil doen meer, maar ek hoef nie wat dit doen. Ek wil net my diens te registreer.

Ons het ook 'n infrastruktuur waar ons 'n generiese diens Exe dat baie .DLLs gebaseer op 'n koppelvlak definisie, so die toevoeging van 'n nuwe "diens" is so eenvoudig soos val in 'n nuwe DLL en herlaai die diens gasheer.

Ons het egter begin om weg van dienste te beweeg. Die probleem wat ons het met hulle is dat hulle toesluit die DLLs (vir ooglopende redes), so dit is 'n pyn om hulle op te gradeer. Ons moet ophou, op te gradeer en dan weer te begin. Nie hard nie, maar verdere stappe. In plaas ons beweeg na spesiale "bladsye" in ons asp.net programme wat die werklike agtergrond werk wat ons nodig het gedoen hardloop. Daar is nog 'n diens, maar al wat dit beteken dit roep die asp.net bladsye sodat dit nie toesluit enige van ons DLLs. Dan kan ons die DLLs in die asp.net bin gids en normale asp.net reëls vir inligting-domein herlaai skop vervang in.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top