我们正在开发ASP.Net和C#中的Web应用程序。这里的要求是与Fortran77中开发的第三方exe进行交互。此第三方exe在提供一些输入并关闭后生成输出文件。在Windows桌面单用户应用程序中,通过使用System.Diagnostics.Process和其中提供的事件可以轻松实现。但是在web中会有多用户环境,并且会对这个exe进行很多调用。在Web应用程序中处理此类exe的最佳方法是什么?
提前致谢。 -Prasad
答案 0 :(得分:0)
通常,当您的请求数量开始增长时,调用不同的进程来执行某项工作(对于请求)并不能很好地扩展。说,如果进程调用不会经常发生,那么你应该没问题。并发请求和吞吐量等的数量将取决于您的服务器硬件,最好的选择是加载测试服务器。因此,您应该使用Process
类来启动完成工作的过程。
您的旧版可执行文件可能不支持多个实例的另一个问题。这不太可能,但有相当多的桌面Windows应用程序检查现有实例。因此,在这种情况下,您无法同时启动进程,只能创建排队逻辑 - 您可以创建进程中队列(在Web应用程序中)或创建将进行排队的外部应用程序(如Windows服务)。
此解决方案可以有替代方法,当完成流程所需的时间很长时(以便在作业完成之前无法阻止Web请求)和/或您需要扩展应用程序以支持更多的负荷。基本上,想法是使用生产者 - 消费者模式,其中您的Web服务器将请求添加到持久化(例如,数据库中的表)队列,然后您有多个机器/服务器运行作业/ Windows服务,该服务将从此队列读取并运行该过程到生成文件。