PROJECT DESCRIPTIONDotNetWinService offers a simple tool based on log4Net, Spring.NET and Quartz.NET that helps declaratively implement scheduled tasks inside a Windows Service. It's developed in C# with Visual Studio 2008.
QUICK STARTFor a quick start go to the
Documentation page.
PROJECT DETAILEver needed to:
- implement a time-based task inside one of your ASP.NET website project?
- combine the power of Spring.NET/Quartz.NET/log4net with a Windows Service?
- deploy new scheduled tasks using XML declarative code without having to reinstall the Windows Service?
DotNetWinService may be a good starting point! It is a project that offers a very simple tool to automate every kind of task you would need such as:
- petition a specific URL: when working on a ASP.NET website, it's sometimes cleaner and easier to maintain all your businness logic inside webpages.
- execute any kind of file (BAT, EXE): care is taken to prevent duplicate processes to be running at the same time.
- fire a method inside an assembly: at this time only value type parameters and the string class are supported.
- fire a method inside an assembly and pipe return value to another method inside the same or different assembly.
INTERESTING FACTS
- since all task implement the same interface (ITask), you can easely add your own tasks.
- project includes a console application to try out your scheduled tasks before running them inside the Windows Service.
ENHANCEMENT
- all task implement the ITask interface, but since some task may differ a lot from each other, it would be a better design to have them inherit from an abstract task data type. It is right now imposible since all task are inhering from the abstract class QuartzJobObject and C# doesn't support multiple inheritance. Right now, I'm working on a new version of the scheduler in order to allow every task to derive from one abstract data type.
- add new tasks to support COM objects.
- add support for reference type when firing a method from an assembly.
- add task to invoke an ASP.NET web service.
- create a dashboard to visualize all tasks invocations and their results.
- add tests.
IDEAS
- A stateful task cannot have another instance of itself running at the same time. This should be configurable.
- What happens if a task could not be executed? This special condition should be configurable.