希望有人可以帮助我找到正确的方向来解决我在设计系统时遇到的这个问题。
我正在创建一个拍卖网站,其中拍卖具有特定的结束日期/时间。
我有一个.NET计时器向用户显示剩余时间,当这个倒计时它会触发和事件更新后端SQL数据库,表示拍卖已经完成,它会通知获胜用户并触发CLOSE功能。 / p>
您如何建议在当时未在浏览器中实际打开的拍卖中执行此操作,以便Timer事件永远不会创建此CLOSE事件。
理想情况下,我需要在拍卖结束时间结束时运行某些东西吗?
由于
答案 0 :(得分:4)
一种选择是在数据库中存储拍卖项目结束/结束的日期/时间。然后,不要担心对它做出反应的事情(在客户端的情况下是计时器)并将其更新关闭。决定它关闭的原因仅仅是现在>关闭日期/时间。
编辑:
在下面的评论中,您说您还需要在拍卖结束时发送邮件。如果是这种情况,您需要某种后台处理来选择所有已关闭的事件并发送邮件。您仍然可以通过存储日期时间来定义关闭。该bg处理可以选择现在大于关闭日期且处理位为假的所有事件。选择后,将它们放在一个持久的队列中(sql中的表,azure队列等......)。然后让后台处理排空队列。在处理每个项目并发送邮件时,它会将事件更新为已处理。
您有多种后台处理选项:
答案 1 :(得分:2)
编写一个Windows服务,在一定时间内轮询数据库(我会说比拍卖的最小长度少一点。举个例子,比如说一天)。该服务将存储在内存中将在该时间内结束的操作,并每秒检查是否有结束的操作。对于已经结束的拍卖,请点击您的CLOSE事件。