我基本上是为招聘人员创建一个网站。我的应用程序中的一项功能需要定期发布到Facebook。发布频率可以是0(从不)到4(高)
对于例如。如果招聘人员有4个空缺职位并且他的发布频率设置为4,则每个职位应该按照轮次发布:第一天的第一份工作,第二份的第二份工作, 3日等第3个工作,第5天再次第1工作(循环时尚)。
如果他将发布频率设置为2,则每天会发布两个作业(因此每个作业将每2天发布一次)
我唯一的问题是我应该为此创建什么类型的线程,因为这都是动态的!!此外,我应该在数据库中存储哪些类型的信息?
我只需要一个解决这个问题的一般策略。没有代码..
答案 0 :(得分:2)
答案 1 :(得分:1)
如果您的程序不间断运行,您可以使用.NET框架中提供的Timer
类之一,而无需进行全面的并发(例如,通过任务并行库)。
我怀疑,你需要的不仅仅是那种 - 某种机制来检测哪些作业成功发布,哪些“错过”,因为程序没有运行(或网络问题等),所以他们可以下次启动程序(或网络可用)时发布。一个小的本地数据库(例如SQLite或MS SQL Server Compact)应该很好地服务于这个目的。
答案 2 :(得分:1)
如果要求与您描述的一样简单,那么我根本不会使用线程。它甚至不需要是一个长期运行的应用程序。我创建了一个简单的应用程序,它只是尝试发布作业然后立即退出。但是,我会安排它每隔一段时间运行一次(通过Windows任务计划程序)。
此应用会首先检查是否尚未针对给定的发布频率发布任何作业。也许在您的数据存储区中设置“Last-Successful-Post-Time”设置。如果允许发布,应用程序将只查询优先级最高的作业,然后将其发布到Facebook。一旦成功发布到Facebook,该作业将被降级为最低优先级。
作业优先级可能只是数据存储中的一个简单整数列。较低的值意味着更高的优先级。
修改强>
我想我的建议是,如果你的要求有明确的界限,我建议你将项目分成多个应用程序。这种方式存在分离关注点。您不必担心如何在您的网站代码中生成您的Facebook通知流程。