我正在开发一个ASP.NET应用程序,其中包含WCF服务,旨在作为模拟生产环境的测试替身。它代表着一个非常复杂的后端,可以通过其Web服务接收订单,然后几小时或几天后通过调用其他系统上的Web服务发送通知。
第一个发布版本这个测试替身应用程序的要求之一是无状态即没有数据库。
原始开发人员(已不再参与项目)设计的方案如下:
1. 通过Web服务接收订单。 2. 创建一个后台线程。 3. 返回给客户端一个注定的响应。 4. 后台线程休眠5-30秒钟,发送通知,然后继续休眠,发送通知,重复三到四次,最后在没有任务时终止。
5到30秒钟的休眠时间意味着模拟了生产系统长达数小时甚至数天的延迟。每个后台线程的寿命不超过三分钟。
目前,该设计看起来很适合其目的。到目前为止,使用此方法遇到的唯一问题是,如果发生导致应用程序重新启动的情况(web.config更改,新的DLL部署,重启IIS等),则后台线程似乎会被终止,并且任何未完成的通知也将无法发送。
现在,客户决定将5-30秒的延迟时间延长到5分钟之间,这意味着后台线程的生命周期可能超过20分钟。
我的第一直觉是,对于这个设计来说让延迟变成五分钟可能不是一个好主意。我很想知道大家对此有什么想法。增加延迟后,这种设计可靠吗?是否有任何使用ASP.NET运行长时间后台线程的经验可以评论这个问题?
第一个发布版本这个测试替身应用程序的要求之一是无状态即没有数据库。
原始开发人员(已不再参与项目)设计的方案如下:
1. 通过Web服务接收订单。 2. 创建一个后台线程。 3. 返回给客户端一个注定的响应。 4. 后台线程休眠5-30秒钟,发送通知,然后继续休眠,发送通知,重复三到四次,最后在没有任务时终止。
5到30秒钟的休眠时间意味着模拟了生产系统长达数小时甚至数天的延迟。每个后台线程的寿命不超过三分钟。
目前,该设计看起来很适合其目的。到目前为止,使用此方法遇到的唯一问题是,如果发生导致应用程序重新启动的情况(web.config更改,新的DLL部署,重启IIS等),则后台线程似乎会被终止,并且任何未完成的通知也将无法发送。
现在,客户决定将5-30秒的延迟时间延长到5分钟之间,这意味着后台线程的生命周期可能超过20分钟。
我的第一直觉是,对于这个设计来说让延迟变成五分钟可能不是一个好主意。我很想知道大家对此有什么想法。增加延迟后,这种设计可靠吗?是否有任何使用ASP.NET运行长时间后台线程的经验可以评论这个问题?