解释
我正在开发一个简单的汽车业务系统,我必须实现以下功能:
我在数据库中有一个特殊的状态,用于确定用户是否:在等待名单上(我也有确切的位置)或者可以利用机会购买汽车。每当汽车到达时,我运行一个方法来改变等待列表上第一个客户的状态。这就是问题所在:
问题: 客户可以在24小时内利用他的机会。但是我必须在最后检查,如果他/她已经买了这辆车。出于这个原因,我必须安排一种方法在24小时内运行。
可能的解决方案: 我在想两件事。首先是使用像Hangfire这样的作业调度程序。问题是因为我的应用程序中没有任何其他工作,所以我不想为这么小的东西包含整个包。第二是使用使检查方法异步并使线程在继续之前休眠24小时(我对使用线程感觉不舒服,这只是一个想法)。我从this文章中得到了这个想法。请记住,不止一辆车可以到达多个商店。这是否意味着我应该使用多个线程以及它将如何影响系统的性能?
问题:
两种解决方案中哪一项更好?
在这种特殊情况下,您是否还有其他可能的建议?
答案 0 :(得分:1)
我同意。如果你不打算将它用于许多工作,只为一个工作导入一个包有点过分。
如果您正在运行SQL Server,我建议您使用SQL Server代理编写.NET控制台应用程序以按计划运行。 (参见图像)如果您有需要运行的存储过程,您还可以选择直接从SQL作业运行它们,如果由于某种原因您不想从.NET应用程序运行它们。
由于听起来您需要在数据驱动的时间表上运行,因此您可以考虑添加一个触发器,以便在数据库中查找新记录" special"汽车被插入数据库。 MSDN SQL Job using Trigger
我已经做了类似的事情,每天早上,营业时间开始前一个小时,我运行一个.NET可执行文件,检查表A中的最新记录,并将其与表B中的值进行比较并确定如果表A中的记录需要更新。
我还使用SQL Server来运行根据已在数据库中添加或修改的数据按计划发送电子邮件的作业。
使用SQL Server运行作业有一些优点,因为有许多选项可用于通知您事件,重试运行失败的作业,日志记录和作业历史记录。您可以指定任何类型的计划,从频繁重复到每周只运行一次。