gpt4 book ai didi

asp.net - 在ASP.NET中长时间运行的后台进程-Application_Start还是单独的进程?

转载 作者:行者123 更新时间:2023-12-04 03:30:10 25 4
gpt4 key购买 nike

我正在开发一个需要后端工作线程才能运行的.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)更加隔离,但感觉更加困惑。

最好的方法是什么?

最佳答案

如果可能的话,我会强烈选择Windows服务。 ASP.NET comes with a lot of baggage中的后台线程。

  • 后台进程的生命周期受IIS的支配。如果IIS决定其时间来回收应用程序池,则后台进程将重新启动。如果IIS由于不事件而决定停止应用程序池,则后台进程将不会运行。
  • 如果将IIS配置为作为Web Garden运行(每个AppPool有多个进程),则您的后台线程可能会运行多次。
  • 稍后,如果您决定对网站(运行该网站的多个服务器)进行负载平衡,则可能必须更改应用程序以确保后台线程仅在一台服务器上发生。

  • 还有更多。

    关于asp.net - 在ASP.NET中长时间运行的后台进程-Application_Start还是单独的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8401886/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com