c#, ASP.net应用程序调用可执行文件来创建输出文件



我们正在用ASP开发一个web应用程序。Net和c#。这里的要求是与Fortran77中开发的第三方exe进行交互。这个第三方exe在提供一些输入并关闭后产生一个输出文件。在windows桌面单用户应用程序中,这很容易通过使用System.Diagnostics.Process和其中提供的事件来实现。但是在web中,会有多用户环境,并且会对这个exe进行许多调用。在web应用程序中处理这种exe的最佳方法是什么?

  1. 如果我们在每个用户请求上调用exe作为exe在生成输出文件后关闭,它是好的吗?或
  2. 可以使用windows服务吗?或
  3. 还有其他方法吗?

提前感谢。普拉萨德

通常,当请求数量开始增长时,调用不同的流程来完成某些工作(对于请求)并不能很好地扩展。也就是说,如果流程调用不会频繁发生,那么应该没有问题。并发请求的数量和吞吐量等实际上取决于服务器硬件,最好的办法是对服务器进行负载测试。因此,您应该使用Process类来启动进程以完成工作。

另一个可能的问题是您的遗留可执行文件不支持多实例。这是不太可能的,但有相当多的桌面窗口应用程序检查现有的实例。因此,在这种情况下,你不能同时启动进程,唯一的方法是创建一个队列逻辑——你可以创建一个进程内队列(在你的web应用程序中)或创建一个外部应用程序(如windows服务)来执行队列。

这个解决方案可以有一个替代的方法,当处理完成的时间很长(所以你不能阻止你的web请求,直到工作完成)和/或你需要扩展你的应用程序来支持更多的负载时,这个解决方案很有用。本质上的想法是使用生产者-消费者模式,你的web服务器将请求添加到一个持久化(例如数据库中的表)队列中,然后你有多台机器/服务器运行一个作业/windows服务,它将从这个队列中读取并运行进程来生成文件。

最新更新