我该如何完成此类通知?

时间:2011-09-26 02:49:54

标签: c#

我基本上是为招聘人员创建一个网站。我的应用程序中的一项功能需要定期发布到Facebook。发布频率可以是0(从不)到4(高)

对于例如。如果招聘人员有4个空缺职位并且他的发布频率设置为4,则每个职位应该按照轮次发布:第一天的第一份工作,第二份的第二份工作, 3日等第3个工作,第5天再次第1工作(循环时尚)。

如果他将发布频率设置为2,则每天会发布两个作业(因此每个作业将每2天发布一次)

我唯一的问题是我应该为此创建什么类型的线程,因为这都是动态的!!此外,我应该在数据库中存储哪些类型的信息?

我只需要一个解决这个问题的一般策略。没有代码..

3 个答案:

答案 0 :(得分:2)

  • 我认为你需要从你的网站上分离它,我的意思是更好地运行在IIS上托管的服务中发布作业的逻辑(我不确定这样的事情是否存在,但我想有)。
  • 此外,您还需要有作业队列表来记住需要发布的作业,然后您的服务会将其取出并逐个发布。
  • 要确定这是否是发布作业的时间,您可以定义一个具有可配置间隔的计时器,以检查是否有任何要发布的作业。
  • 如果发布失败,请确保保留详细日志详细信息。这很重要,因为Facebook可能会更改其API或您的API密钥变得无效或其他任何事情,然后您需要知道发生了什么。
  • 另外,我强烈建议有一个网页,用于报告作业到发布队列的状态,如果他们不能解决问题的原因。

答案 1 :(得分:1)

如果您的程序不间断运行,您可以使用.NET框架中提供的Timer类之一,而无需进行全面的并发(例如,通过任务并行库)。

我怀疑,你需要的不仅仅是那种 - 某种机制来检测哪些作业成功发布,哪些“错过”,因为程序没有运行(或网络问题等),所以他们可以下次启动程序(或网络可用)时发布。一个小的本地数据库(例如SQLite或MS SQL Server Compact)应该很好地服务于这个目的。

答案 2 :(得分:1)

如果要求与您描述的一样简单,那么我根本不会使用线程。它甚至不需要是一个长期运行的应用程序。我创建了一个简单的应用程序,它只是尝试发布作业然后立即退出。但是,我会安排它每隔一段时间运行一次(通过Windows任务计划程序)。

此应用会首先检查是否尚未针对给定的发布频率发布任何作业。也许在您的数据存储区中设置“Last-Successful-Post-Time”设置。如果允许发布,应用程序将只查询优先级最高的作业,然后将其发布到Facebook。一旦成功发布到Facebook,该作业将被降级为最低优先级。

作业优先级可能只是数据存储中的一个简单整数列。较低的值意味着更高的优先级。

修改

我想我的建议是,如果你的要求有明确的界限,我建议你将项目分成多个应用程序。这种方式存在分离关注点。您不必担心如何在您的网站代码中生成您的Facebook通知流程。