【问题标题】:Changing the status of an item based on time constraints根据时间限制更改项目的状态
【发布时间】:2012-02-05 13:00:23
【问题描述】:

我为客户建立了一个投标网站,用户在该网站上发布商品并设置拍卖持续时间。该项目首先处于 Pending 状态,直到管理员批准它或自用户首次发布以来已过去 12 小时。从那时起,该项目将发布,其他用户可以对其进行投标。拍卖期结束后,该物品应关闭,出价最高的人将赢得该物品...

除此之外,我还需要发送电子邮件通知...

  • 发布新项目后致管理员。
  • 在获胜者赢得一件物品后致他。
  • 拍卖结束后致物品所有者。
  • 一旦拍卖结束并且有赢家(即实际出价的人),就给管理员。

目前我正在做的是在我的业务层中调用一些方法,该方法检查是否有任何已超过 12 小时的待发布项目以使其发布,以及是否有已发布的项目已超过其拍卖期限关闭它们。这个方法是从网站的主页、项目的搜索页面等几个地方调用的……这实际上给我带来了问题(Refer to this question)。因此,我认为值得寻找一种替代解决方案来帮助我摆脱所有这些最有可能是由于设计不佳造成的问题。

  1. 我是否应该通过从一个地方调用该方法并相应地发送电子邮件来集中处理?
  2. 我应该将整个事情委托给某种计划任务吗?在这种情况下,运行此任务的合理时间范围是多少?
  3. 还有其他建议吗?

【问题讨论】:

    标签: c# .net asp.net-mvc email scheduled-tasks


    【解决方案1】:

    我应该将整个事情委托给某种计划任务吗?在 在这种情况下,运行此任务的合理时间范围是多少?

    是的,这似乎是最好的方法。将电子邮件发送卸载到与您的 ASP.NET MVC 应用程序不同的进程。就时间框架而言,这将取决于您的业务需求。你可以看看Quartz.NET,它可以用作任务调度机制。

    【讨论】:

      【解决方案2】:

      您绝对应该将其卸载到另一个进程,例如计划任务或服务。你没有说你目前有多少用户,或者有多少可能同时做某事,但是如果你发现你的用户群在增长,那么通过网络请求发送大量电子邮件最终会超时。

      单独的任务/服务还可以让您更好地控制发送的电子邮件内容和时间。

      【讨论】:

      • 感谢您指出,一旦我的用户群增长,Web 请求可能会超时。这是我绝对不应该掉以轻心的事情。但是每 5 分钟运行一次计划任务有意义吗?还是计划任务通常每天运行一次或类似的东西?
      • 这取决于你需要多久运行一次这个任务,但是很多人之前在 SO 上问过这个问题,看看这些搜索结果寻找答案:http://stackoverflow.com/search?q=scheduled+task+vs+service
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 2021-12-09
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 2019-06-15
      相关资源
      最近更新 更多