1

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

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

  1. 检查 ondeck SOLR 服务器是否空闲
  2. 告诉 ondeck 服务器做一个完整的数据导入,服务器状态是“忙碌”
  3. 每隔一段时间轮询 ondeck 服务器,当它完成时,状态恢复为空闲。
  4. 将 ondeck 服务器(带有新信息)与实时 SOLR 服务器交换。
  5. 在我们的数据库上运行存储过程。

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

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

4

1 回答 1

0

我可能会建议您查看 Websokets(如果您必须支持旧浏览器,则可以使用长轮询)。有一个非常棒的库,叫做SignalR,它会为你处理所有复杂的工作人员。如果客户端浏览器支持,它使用 websockets,如果不支持,它会自动切换到长轮询。它在 Internet 上有很好的文档和大量的示例。

于 2013-03-13T16:35:05.743 回答