2011-01-12 149 views
0

我想创建一个windows服务。无论何时,我的ASP.NET应用程序的用户必须执行耗时的任务,IIS都会将任务交给将返回令牌(该任务的临时名称)的服务,并在后台执行该任务。在任何时候,用户都会看到他/她的任务的状态,这些任务将在队列,处理或完成中等待处理。该服务将并行执行固定数量的作业,并为下一个传入任务保留一个队列。此外,系统管理员还可以使用WinForms应用程序,以便添加特殊的ADMIn任务,如“清理孤立文件”或“归档非活动用户数据”。ASP.NET中处理长时间运行任务的单独服务

你能指点一些东西,可以开始我作为一个整体的概念 - 我知道我可以谷歌的Windows服务,我可以从头开始做,但时间是本质的,所以也许你知道已经存在的东西,我可以使用块建立。

回答

0

我认为的简单方法:

您可以使用数据库表来完成待处理任务。
一个简单的表格(或几个...),包含您需要的所有信息。
例如ID_Task/Name/XML_Object(序列化,包含信息)/状态
当用户想要添加任务时,表中有一行。

例如,XML_Object将包含下一步要做的事情。

然后,您将创建一个Windows服务,每隔5分钟或10分钟打勾并检查您的表格。
如果它看到状态为“待定”的任务,它会在后台工作中启动任务并继续观看。
它在某些步骤更新状态的任务。
您可以检查状态是否与您对每个步骤期望的状态不符。

+0

谢谢你花时间回答,但是我正在寻找更多的一种现成的框架来处理任务队列,记录异常处理等,所以我可以专注于任务的业务逻辑,而不是创建引擎来运行他们第一。 – lstanczyk 2011-03-17 15:44:01

0

我很想关于我一直致力于运行/排队后台任务的服务的一些反馈。 http://sharphooks.net

它涉及实现接口的单一方法,通过Web UI上传文件,然后通过HTTP POST发布新作业。