Abidar – ASP.NET Task Scheduling Framework

Recently I published a couple of blog posts about building a simple ASP.NET task scheduling system in a practical way and with a basic example (Part 1 and Part 2).

Per comments and feedback from some visitors, especially a dear and respectful friend like Dave Burke, I also promised to publish my general framework for task scheduling as a part of an open source project. Today I found some free time to start this and created a CodePlex repository for the project.

Finding an appropriate name for the project was not easy and I usually end up with special names such as names of places and areas when I get stuck in these situations! So I ended up with another special name for this project like Abidar.

Abidar is the name of a beautiful mountain in great Kurdistan near Sanandaj and a great place to visit! Abidar has one of the best natures that I could ever seen in the country!

However, Abidar is started on CodePlex and I’m going to add the initial code as soon as I can find some free time to do that. Abidar is licensed under The MIT License to let everyone use it easily and without restrictions in the other projects.

My plan is to release separate versions for ASP.NET 2.0 and 3.5 to have the best compatibility for everyone.

Stay tuned! We’ll upload the first code package very soon!

[advertisement] Axosoft OnTime 2008 is four developer tools in one: bug tracking, project wiki, feature management, and help desk. It manages your development process so developers can focus on coding. Installed or Hosted – Free Single-user license -- Free 30-day team trial.

6 Comments : 06.30.08

Feedbacks

 avatar
#1
Mahdi Taghizadeh
07.01.2008 @ 5:21 AM

Dear Keyvan!

Great news! Thank you so much and I'm waiting for production release as soon as possible ;-)

Pingback from Dew Drop - July 1, 2008 | Alvin Ashcraft's Morning Dew

First Approach to an ASP.NET Task Scheduler

 avatar
#4
ThatGuy
07.07.2008 @ 5:34 AM

Windows workflows can form the basis of a fairly solid task scheduling system. Maybe you could create a very simple workflow that utilises delays, a while loop, and a custom activity a little less restrictive than the CallExternalMethod activity, which allows your workflow to call "scheduled" methods in external assemblies.

A single class TaskScheduler engine could host the workflow instance(s) and manage "discovery" of scheduled tasks. By discovery i mean that there might be several ways a developer or end user might want to "register" a task to be scheduled.

For example a developer requires a method that might poll a Db, so they simply write the method, then decorate it with a custom attribute something like:

[ScheduledTask(Runat="10:00am", Frequency="Daily")]

So one of the discovery methods would be reflecting an assembly. So a DisoveryService something like FileSystemDiscoveryService might exist, which would enumerate all decorated public methods in all assemblies in a given folder, the paths being defined by a custom config section :-)

Of course to give some flexibility in your scheduling, Sql Workflow Persistance might be used for tasks with scheduled frequnecy > 12 hours, and In-Menory workflow persistance might be more efficient for tasks which are to be called regularly. Some utility classes would be needed to calcuate TimeSpans for first run and execution time - these would be exposed to the delay activity in your sequential workflow.

You could also provide a simple UI type interface for non technical users - just add a WCF endpoint connected to a simple discoery service and a simple web page?

Ensure any exeptions in the sequential workflow are logged and handled, you probably don't want exceptions killing the sheduling depending on the servirity.

Just thinkin out loud :-)

 avatar
#5
Abidar 1.0 Beta 1 : Keyvan Nayyeri
07.18.2008 @ 11:23 AM

Pingback from Abidar 1.0 Beta 1 : Keyvan Nayyeri

 avatar
#6
Raj
07.26.2008 @ 2:34 AM

Its very nice code. We want some improvements over that code

Leave a Comment