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