我想从网页(MVC5)启动一个长时间运行的进程,并将请求发送到Windows服务(除非有更好的方法?)。问题是,我不希望这个过程开始两次。
该过程将使用SignalR广播进度(我将该部分排序),但使用.Net 4.5 - 如何确保第一个请求开始,第二个请求被拒绝(即使它们相隔毫秒)。
我知道我们可以使用Windows服务,数据库。关于最佳实践的想法?
答案 0 :(得分:1)
你应该看看hangfire。
使用hangfire,您可以运行一些长时间运行的后台任务,并概述仪表板上的所有当前任务。尝试一下,我认为这很酷。
答案 1 :(得分:0)
您可以将其放在键/值对中,例如将请求映射到进程的缓存。您在ASP.NET中使用了Cache
个对象。如果密钥不在缓存中,则需要注意检查Windows服务。数据库方法在持久性方面更安全。因此,您不必轮询Windows服务。无论哪种方式,您都需要在流程完成时切换键/值对。