我知道我可以执行Process.Start
从Web应用程序执行控制台应用程序,但我想了解如何正确设计此项目。
经过身份验证的用户可以提交需要执行某个后端工作的控制台应用程序的请求(可能需要或可能不需要很长时间),并且需要向用户显示控制台应用程序的结果。
Process.Start
是否在与asp.net进程相同的线程中执行控制台应用程序?如果是这样,这会“锁定”用户的浏览器吗?我应该异步这样做吗?如果是这样,这是如何推荐的?如何从控制台应用程序返回结果?
此外,这种方法是否可以针对几百个提交请求的用户进行扩展?
还有更多回复?
答案 0 :(得分:1)
Process.Start
是非阻止通话。您可以使用Process
对象并处理其事件并读取或写入其流。
至于它是否具有可扩展性,您可能需要许多功能强大的服务器。这取决于实际过程。
答案 1 :(得分:1)
常见的解决方案是拥有一个存储后台操作队列的数据库表。因此,当用户提交请求时,会将新记录添加到队列表中。控制台应用程序定期运行(例如,使用Cron进行调度),检查数据库中的队列表,在后台执行任务并将结果写入数据库。
这种方法具有很高的可扩展性和广泛使用。