使用回调异步启动和忘记操作

时间:2011-02-20 19:12:17

标签: jquery asp.net-mvc asynchronous windows-services

我有一个带有论坛区域的Mvc3应用程序,可以通过电子邮件发布问题。

从不同帐户获取电子邮件,解析它们以及插入数据库的过程非常缓慢。

我首先想到创建一个单独的Windows服务,其中包含一些预定的进程,可以每隔几秒钟完成所有单独的电子邮件处理。

我认为更好的方法是在用户到达论坛部分页面时启动电子邮件检查/解析过程。 所以场景将是:

  1. 用户在mvc应用程序中打开页面论坛区域
  2. 启动异步进程,执行所有缓慢的操作,可以在加载页面时通过对控制器的jquery / javascript调用启动进程。
  3. 控制器会调用电子邮件解析服务并立即返回(点击并忘记)。
  4. 在工作期间,将忽略从其他用户到启动电子邮件处理的同一控制器的所有后续呼叫。
  5. 当流程结束时,如果用户在另一个页面中,如果有新问题,将通知它,并最终刷新页面(始终使用jquery调用)。
  6. 这种方法是否有更好的方法或任何可能的性能损失?我应该使用单独的Windows服务吗?

1 个答案:

答案 0 :(得分:1)

你的方法似乎很好。只需确保您没有使用线程池中的线程来执行冗长的操作。手动生成一个新线程可以正常工作。