长服务器端进程中的同步用户对话

时间:2016-03-20 16:20:57

标签: c# asp.net-mvc

我有一个组件可以将多个文件导入大型数据库。这个过程需要很长时间,并且在许多情况下可能需要用户对话,例如“这是A还是这个B?(按钮A,按钮B)”等等。

该组件是在编写桌面应用程序时编写的,现在需要将此组件迁移到ASP.NET MVC 5应用程序中。我看到的唯一严重问题是管理这些同步用户对话框。更重要的是,根据设计,同步用户输入有时取决于以前的用户输入等。

我知道同步编码“根本不适合”进入网络世界,但是重新设计整个大型算法,以某种方式异步关于用户对话将是一项巨大的工作,并将导致大量的新测试等。

在这种情况下是否有适用的技术而无需将每个用户输入重写为异步?

作为一个说明,该操作将由非常有限的用户使用,并且很少,例如每周1-2次,因此一般性能不是问题。

我在想什么

  1. 通过AJAX调用启动长操作,服务器将启动一个新线程并返回一些“指向”操作的令牌。
  2. 如果有新的用户输入请求,客户端将使用此令牌轮询服务器,例如每秒一次。
  3. 当需要用户输入时,操作会等待X(例如120)秒来获得答案,否则会自行取消。
  4. 如果客户端获取新的用户输入请求,它将显示对话框,收集结果并将其发送回服务器,以便继续操作。
  5. 这是一个可行的设计,还是有更好的解决方案?

0 个答案:

没有答案