【问题标题】:Running task as windows service out of band of iis将任务作为 Windows 服务在 iis 范围外运行
【发布时间】:2011-05-09 02:10:48
【问题描述】:
我们有一个 Web 应用程序,其中调用了对长时间运行或高处理器进程的请求。
我们想创建一个 Windows 服务来从 IIS 服务器上卸载它。我们将在多台机器上安装此服务以减少这些作业的等待时间。我们正在研究的一个想法是将Job 对象序列化到Sql Server 中,并将其JobType 作为另一列。
作业服务将通过使用其指示器更新行来声明该工作,这将阻止其他服务获取它。作业完成后,服务会删除该条目。
我正在寻找其他可能更好的想法来完成作业服务队列。
【问题讨论】:
标签:
sql-server
task
sql-agent-job
【解决方案1】:
我想说这是处理这个问题的好方法。我唯一要补充的是,虽然我不知道 Job 对象是什么或它是如何创建的,但您也可以卸载它。无需创建对象并将其序列化到数据库中,只需将原始数据存储在 SQL 中。让服务自己从头开始构建 Job 对象。这样一来,您就可以将序列化排除在外。但是,如果这不可能,我会说您的解决方案似乎是最可行的。
如果您确实走这条路,您可以考虑优化您的服务卸载。例如,您可以在负载繁忙时唤醒额外的服务,然后在负载减轻时让一些服务进入睡眠状态。