Avatar billede soeren_dk Nybegynder
13. september 2005 - 14:29 Der er 5 kommentarer og
2 løsninger

Tidsbestemte processer i en .NET webapplikation

Hej Eksperter,
Jeg er igang med en .NET webapplikation og har brug for at kunne udføre en række opgaver mod databasen på et forudbestemt tidspunkt af døgnet. Men uafhængigt af brugerne.



Jeg har spekuleret over forskellige løsninger, bla. via. .NET threads eller måske en webservice eller...?

Jeg håber nogen kan hjælpe mig videre med et godt råd.
Soeren_DK
Avatar billede driis Nybegynder
13. september 2005 - 19:12 #1
Det klares nok bedst med en Windows service installeret på serveren - idet det skal kunne køre uafhængigt af en bruger.
Avatar billede driis Nybegynder
13. september 2005 - 19:16 #2
Men der er selvfølgelig andre metoder. F.eks., hvis du vil undgå at skrive en Windows service og installere og vedligeholde den på serveren, kunne du sætte arbejdet i gang i en selvstændig tråd ved første request til din webapplikation efter det tidspunkt, arbejdet skal sættes i gang. Om det kan bruges kommer an på hvor store dine krav er til præcisionen af det tidspunkt arbejdet sættes i gang, samt om applikationen har nok brugere til  at det er overvejende sandsynligt at der kommer et request ofte nok.
Avatar billede soeren_dk Nybegynder
14. september 2005 - 10:28 #3
Hej Driis,
Tak for dit svar.
Mit problem er ikke så meget at skrive en service, mere at websitet er skal køre på et webhotel hvor der ikke umiddelbart er mulighed have en service kørende.

Kravet til præcision er begrænset, dog er det vigtigt at systemet køre uanset om der er brugere logget på.

Noget tyder på, at dette ville være nemmest at styre med en dedikeret server (hvor man kan installere egne services) istedet for et traditionelt webhotel.

Med venlig hilsen Søren
Avatar billede -mundi- Nybegynder
14. september 2005 - 10:32 #4
Hvis det er noget som skal opdateres i en database, kan du jo lave et job som SQL serveren kører på bestemte tidspunkter ?
Avatar billede driis Nybegynder
14. september 2005 - 17:56 #5
-mundi-'s forslag er udmærket hvis du bruger SQL Server og har rettigheder til at lave skedulerede jobs; og opgaven i øvrigt egner sig til det. Overvej om det var en mulighed.

Hvis du ikke kan få lov at installere en Windows service (og det får du nok ikke lov til på de fleste webhoteller), kunne du overveje at lave en webservice med en metode, der gør arbejdet. Så kan du lave en lille klientapplikation, der kalder webservicen på det rette tidspunkt. Det kræver dog så at du har en server selv eller en maskine du er sikker på er tændt hver gang metoden skal køres. Så kan du starte klientapplikationen (som blot kalder webservicen), med en Windows scheduled task.

Der er utallige variationer og det jeg lige har skitseret. Essensen er at du skal finde en måde at få "trigget" din opgave, hvis ikke du har mulighed for at placere en Windows service på serveren.

Jeg vil fraråde en løsning hvor du starter en tråd i din .NET applikation og lader den vente til det er tid til at udføre arbejdet. En tråd i en .NET applikation der ikke tilhører et bestemt request, vil være besværlig at arbejde med og debugge hvis noget går galt. Desuden risikerer du at webserveren recycler din applikations process, hvorved tråden er tabt. (IIS6, IIS5 og tidligere gør noget tilsvarende - konklusionen er, hvis det ikke er din egen server, kan du ikke stole på at applikationens proces bevares altid).
Avatar billede soeren_dk Nybegynder
14. september 2005 - 22:37 #6
Hej Driis,
Tak for din gode kommentar - også tak til Mundi naturligvis. Desværre er mssql alene ikke nok.

Jeg er nået dertil hvor jeg vælger at behandle logikken på en "ekstern" pc og derefter opdatere databasen på webhotellet - evt. via en webservice og noget xml data, hvis ikke sql serveren kan nåes af andre veje. Det med en tråd virker ret besværligt at håndtere, så den tanke er droppet.

Tak igen. Jeg har smidt nogle point efter dig - får du dem ikke, så giv mig lige et ping.

/Søren
Avatar billede soeren_dk Nybegynder
14. september 2005 - 22:38 #7
points
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
Kategori
Kurser inden for grundlæggende programmering

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