在ASP.Net MVC5中管理长时间运行的进程

时间:2014-07-01 13:32:38

标签: c# asp.net asp.net-mvc

我正在开发一个MVC应用程序,其中有几个长时间运行的进程。  在这个MVC应用程序中,我试图从facebook中提取朋友并存储在mongoDB中。

此过程的步骤如下: -

  1. 从通用列表对象中的数据库中提取用户的朋友。
  2. 从另一个通用列表对象中的facebook中为用户拉朋友。
  3. 识别不在数据库中的新朋友。
  4. 对于现有的朋友,请运行循环并更新现有数据。
  5. 将新朋友存储在数据库中。有一个
  6. 如果这些朋友大约有50到100个朋友,那就可以了。但如果有1000多个朋友,那么网页大约需要30多分钟来执行它们。为了执行这个过程,我使用Task with async和await。我正在通过jquery AJAX调用控制器动作。

    所以我的问题是,如果它们是2000多条记录,那么它需要花费太多时间。因此,在研究了我想要使用窗口服务从Facebook提取数据的东西之后。但是我还在探索选项,所以我没有使用窗口服务。

    关于使用窗口服务,我有一些问题: -

    1. 如何从ASP.Net MVC启动窗口服务。
    2. 如果我可以从ASP.Net MVC控制器传递窗口服务中的参数。
    3. 如果窗口服务将自动停止任务完成或我需要停止它 来自网页。
    4. 如果可以从窗口azure中的ASP.Net MVC应用程序访问窗口服务,因为它将托管 在Azure。
    5. 从Azure中的MVC访问窗口服务时,它们是否存在任何安全问题。
    6. 抱歉有太多问题。我之前使用过Window Service,但是它按时安排。所以从ASP.Net访问对我来说是新的。

      我找到了一篇文章http://weblogs.asp.net/kaushal/start-stop-window-service-from-asp-net-page,但它没有提供我问题的所有答案。

      请在这方面帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

为什么要从ASP.Net启动/停止服务?它是一个Windows服务,让它定期运行,比如每天或你想要的任何频率,让它完成工作或读/写数据库和合并来自Facebook的合同。为什么它甚至是一个ASP.Net应用程序,如果就是这样。?

也许我遗漏了一些东西,但您不需要从Web应用程序与Windows服务进行交互。您需要做的就是查询数据库。让服务定期在后台同步FB联系人到MongoDB。