我正在开发一个需要后端工作线程运行的.NET 4应用程序。该主题主要包含以下代码:
while (true) {
//Check stuff in database
//Do stuff
//write to database / filesystem
Thread.sleep(60000)
}
ASP.NET应用程序只是数据库的前端。
我的问题在于放置这个工作循环的最佳位置。看来我的两个选择是(1)将它从Application_Start
方法中分离出来,然后让它运行,或者(2)将它捆绑在一个单独的进程中(Windows服务?)
(1)显然需要ASP.NET代码中的一些逻辑来检查它是否仍在运行,因为IIS可能会将其终止。整个应用程序逻辑在一个易于部署的软件包中也非常简洁。 (2)更加隔离,但感觉更麻烦。
最好的方法是什么?
答案 0 :(得分:14)
如果可能,我会强烈选择Windows服务。 ASP.NET comes with a lot of baggage中的背景线程。
还有更多。
答案 1 :(得分:0)
考虑像Hangfire之类的简单内容,然后考虑the design points in this related answer。