我正在开发一个项目,用户将文件上传到将要解析的服务器。
我希望用户在上传完成后收到状态消息,然后让他们能够轮询服务器以获取有关解析状态的更新。
我正在考虑使用ajax文件上传,当客户端从服务器收到上传成功消息时,它开始每2秒轮询一次状态。我不知道如何在让服务器继续执行解析器并且能够跟踪执行状态的同时将数据返回给用户。
从控制器返回视图后,继续执行脚本的最佳方法是什么。
编辑:
我怀疑我可能需要生成另一个进程,但我不知道如何执行此操作
答案 0 :(得分:2)
我认为在这种特殊情况下,将文件处理与Web请求分离是有意义的。 C.M.建议的ThreadPool.QueueUserWorkItem方法。是一种选择,但您可能还需要考虑使用真正的排队机制(如MSMQ或RabbitMQ)并在单独的应用程序中处理您的上传。这样,您的Web层就会与业务流程分离,如果需要,您可以单独扩展每个部分。
答案 1 :(得分:0)
你应该看看SignalR(https://github.com/SignalR/SignalR)它是一个用于构建网络应用程序的库,客户端和服务器之间的通信非常方便。
如果您想知道如何进行后台处理,您可以使用线程来启动即使在网页返回给用户后也会运行的线程。 StackOverflow和Web上有很多这方面的例子。
答案 2 :(得分:0)
我看到这样做的一个简单方法是使用ThreadPool.QueueUserWorkItem以及跟踪状态后台线程的静态列表。