I have a web app that I’m writing right now that is supposed to have “periodical events”. For instance, at midnight, the web app should calculate “scores” for all users. I want this done only once during the day.
Is there a way that I can automate this, so it runs automatically at midnight (or whatever hour I choose)?
I don’t like the idea of creating a separate script (VBS) to do this, as the calculation would depend on a lot of business logic of the app. I was thinking to put it into a separate Class Library, so it can use the web app logic (which is also in a class library), but is this the best way to go about it?
I also don’t like the idea of using the Session_Start() event in the Global.asax to trigger the event by checking the hour manually. There must be some easier way – especially because down the road I expect there will be a lot more of periodical events – some may have to be triggered every fifteen minutes, for example …
Thanks a lot for any help you can give me.
You should not do this in the web app itself. You are correct to put the business logic in a separate library. Once you have done this, you can use the business logic from anywhere, and therefore, a good solution would be to create a console application that does the nightly jobs, and invoke the console application from Windows Task Scheduler. IIS is not suitable as a host for periodical events.