我正在努力将桌面应用程序 (WinForm) 移植到 Web 应用程序 (Java/Spring/JPA)。问题很多,我有点挣扎......
现在问题出在线程上了!
在执行从数据库导出某些数据的原始应用程序中,有一个指示进程进度的进度条。
我想在新的网络应用程序中移植这个进度条。为此,我想到了使用 AJAX 并使用单独的线程来运行数据导出。
主要关注点是:
- 我采用的方法是否正确?在 Web 应用程序中使用多线程是否存在问题?
- 如果在导出过程中按下 F5 或刷新按钮,究竟会发生什么?我怎样才能停止这个过程?
- 如何定期更新进度条?我必须通过 ajax 调用服务器吗?
最佳答案
我主要是一名 ASP.Net 开发人员,但根据我对 HTTP 协议(protocol)的了解,这并不是解决问题的方法。我已经看到了很多相当聪明的解决方案,但最终很清楚的是,HTTP 协议(protocol)根本就不是为这样工作而设计的。
显然您知道 flash 或 silverlight 应用程序可以执行此操作,但它会带来一系列问题。
我自己更喜欢将所有奇怪的东西都放在服务器上。过去,我不得不想出一种方法来通过 Web 应用程序发送数千封电子邮件,并让用户了解它的进展情况。我设计了一组表来充当队列。 Web 应用程序将简单地将任何交付请求放入此队列中,进度条将由检查队列中项目状态的请求确定。在后台运行的是一个 Windows 服务,它也会检查这个队列,实际上负责传递邮件并设置每个项目完成或失败的状态。
开发起来有点困难,因为 Windows 服务可能很棘手,但一旦启动并运行,它就非常流畅和可靠。根据您的情况,也许一个简单的计划任务设置为每隔几分钟运行一次就可以解决问题。
关于java - Web 应用程序和多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10802833/