我有一项服务,可以对客户提供的图像进行图像处理。 每次处理都需要CPU(3分钟aprox运行时/图像),因此我不允许一次处理多于1个图像。
我所做的是,当调用服务时,图像将保存在服务器上,并且一个条目将添加到数据库中,状态排队。
现在我想创建一个后台任务或者某个东西,它从数据库中获取状态为Queued的每个条目,处理该图像,将条目状态更新为Done,然后获取状态为Queued的新条目,等等上。
可能会出现没有图像在某个时间排队的情况。
您如何建议我实施此操作?
答案 0 :(得分:2)
听起来你想要的是排队服务。
http://msdn.microsoft.com/en-us/library/ms731089.aspx
它允许您专注于核心算法,而不用担心排队消息的机制(例如为队列制作自定义数据库表等)。排队听起来很容易,但让它可靠地工作比听起来更难 - 最好留给MS的专家:o)
它还提供了一些很好的功能,如耐用性,毒物消息处理等。
答案 1 :(得分:0)
也许您可以开发一种Windows服务,每分钟轮询数据库以处理任何图像。
答案 2 :(得分:0)
您可以使用Windows Server AppFabric来托管工作流支持的WCF服务。而不是service.svc,扩展名是service.xamlx。 AppFabric旨在运行这样的长期运行流程,并可根据您的需求进行扩展。