我正在编写一个.NET MVC应用程序,需要运行两个后台进程,我不确定这些进程是否应该是Web应用程序中的线程,或者它们是否应该是单独的Windows服务。我更喜欢它们在Web应用程序中,以便更容易部署,配置和管理。
第一个流程是一个定时事件,需要每15分钟检查一次数据源,以确定是否已发运某些产品。如果有任何已发货,此过程将获取有关产品的信息并在数据库表(队列)中创建“作业”记录,以便以后处理。
第二个进程是另一个定时事件,需要检查数据库表(队列)以查看是否有任何工作要做。如果有未处理的记录,它会将它们读入一个线程安全列表,然后使用几个.NET任务来并行处理它们。
我将其构建为Web应用程序的原因是,我将让我的客户能够查看有关此流程的历史信息,手动提交作业的能力以及配置应用程序的产品的能力应该“寻找”。
有没有一种很好的方法可以将所有这些内容构建到Web应用程序中,还是应该将其拆分为多个应用程序?对网络视图的需求将非常低。
答案 0 :(得分:5)
Phil Haack recently blogged,如果您决定直接在Web应用程序中实施重复的后台任务,而不是在单独的服务中将其外部化,那么您将面临的挑战。
答案 1 :(得分:3)
我建议为后台操作提供专门的服务。这样做的原因是IIS可以在任何时间点拆除整个应用程序。