我正在设计一个 ASP.NET 4.0 Web 应用程序,管理员可以在其中创建一个有到期时间的拍卖。到期时间将存储在数据库中。考虑到应用程序实例可能没有在时间运行的事实,我如何确保拍卖在预定时间结束?该应用程序将使用 IIS7 托管。我正在考虑 Windows 服务,但我想知道还有哪些其他选项。
最佳答案
您可以在此处从两种情况中进行选择:
- 懒惰使用网络应用程序
- 积极提供服务
惰性场景
除非您必须立即与拍卖的获胜者互动,否则您可以等到应用程序启动,然后让应用程序确定是否有任何已过期的拍卖。在那个时刻收集它们并相应地处理它们。
事件场景
创建一个从数据库中挑选第一个到期拍卖的服务。存储该 DateTime 并让服务休眠直到拍卖结束。在该日期时间启动服务并处理即将到期的拍卖。然后让服务寻找下一次拍卖到期并让服务再次休眠。等等……我想The Windows Workflow Foundation包含此实践的所有工具和要求。
介于两者之间
激活一个调度程序,每隔一小时/半小时/15 分钟唤醒您的网络应用程序并执行一些懒惰的事情。使用像 HostMonitor 这样的调度程序.
关于c# - 使用 Web 应用程序管理定时事件的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3815252/