我们有一个Web应用程序,其中调用了对长时间运行或高处理器进程的请求。
我们想要创建一个Windows服务,以便从IIS服务器上卸载它。我们将在多台机器上安装此服务,以减少这些作业的等待时间。我们正在考虑的一个想法是将Job
对象序列化为Sql Server,其JobType
作为另一列。
作业服务将通过使用其指示符更新行来声明作业,这将使其他服务无法获取它。作业完成后,服务将删除该条目。
我正在寻找的是完成工作服务队列的其他可能更好的想法。
答案 0 :(得分:0)
我想说这是处理这个问题的好方法。我唯一要补充的是,虽然我不知道Job对象是什么或者它是如何创建的,但你也可以卸载它。只需将原始数据存储在SQL中,而不是创建对象并将其序列化到数据库。让服务从头开始处理自己构建Job对象。这样你就可以减少序列化。但是,如果这是不可能的,我会说你的解决方案似乎是最可行的。
如果你选择这条路线,你可以考虑优化你的服务卸载。例如,你可以在负载繁忙时唤醒额外的服务,然后在负载变亮时让一些服务进入休眠状态。