2013-03-13 59 views
1

我们在我们的Web应用程序中使用SOLR进行自动完成搜索。我们有一个每晚的过程,为我们的数据库添加一堆数据,一旦这个过程完成,我们需要将数据从数据库导入到我们的SOLR服务器中。从MVC应用程序中自动执行分步过程

目前该导入过程是按以下顺序手动完成:

  1. 检查ondeck SOLR服务器空闲
  2. 告诉ondeck服务器做数据的全进口,服务器的状态是“忙”
  3. 每隔一段时间轮询一次ondeck服务器,当它结束时,状态恢复为空闲状态。
  4. 使用实时SOLR服务器交换带有新信息的ondeck服务器。
  5. 在我们的数据库上运行存储过程。

我们在我们的网络应用程序上有一个管理工具页面。我想要做的是在该页面上放置一个按钮(通过AJAX调用我们的Web应用程序)来启动该进程,并告诉用户该进程已启动。整个过程需要大约一个小时的时间才能完成,因此我不能让AJAX呼叫在一个小时内运行,然后回到告诉用户该过程已完成的页面。

我需要它异步完成。该过程必须被启动,一旦启动,它会通知用户它已经开始,然后应用程序继续等待该过程的每个步骤,然后调用下一步直到完成。 MVC 4中的代码看起来是如何实现这一点的?我一直在看MSDN上的教程asyncawait,但我有点困惑。

回答

0

我可能会建议你看一下Websokets(或者如果你必须支持旧浏览器,那么需要长时间监视)。有一个非常好的图书馆叫SignalR,它可以为你处理所有复杂的工作人员。如果客户端浏览器支持它,则使用websockets,如果不是,则自动切换到长时间轮询。它有很好的documentation和很多expamles在互联网上。