用于处理ASP.NET中长时间运行的任务的单独服务

时间:2011-01-12 22:07:04

标签: .net asp.net architecture windows-services client-server

我想制作Windows服务。每当我的ASP.NET应用程序的用户必须执行一项耗时的任务时,IIS会将任务提供给服务,该服务将返回一个令牌(任务的临时名称),并且在后台服务将执行任务。在任何时候,用户都会看到他/她的任务的状态,该状态将在队列,处理或完成中处于待处理状态。该服务将并行执行固定数量的作业,并为下一个传入的任务保留队列。此外,系统管理员还会有一个WinForms应用程序,它允许添加特殊的ADMIn任务,例如“清除孤立文件”或“存档非活动用户数据”。

你能指出一些可以从头开始我的东西作为一个整体概念 - 我知道我可以谷歌的Windows服务,我能够从头开始自己做,但时间是精华所以你可能知道已经存在的东西,我可以使用块来构建。

2 个答案:

答案 0 :(得分:0)

我想的简单方法:

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

例如,XML_Object将包含要执行的下一步。

然后,你每隔5到10分钟打一次窗户服务并查看你的桌子 如果它看到状态为“待定”的任务,它将在后台工作中启动任务并继续观看 并且它在某些步骤上更新状态'任务 您可以检查状态是否与每个步骤所期望的状态不同。

答案 1 :(得分:0)

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

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