gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:52 24 4
gpt4 key购买 nike

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

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

提前致谢。 -普拉萨德

最佳答案

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

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

此解决方案可以有替代方法,当流程完成所花费的时间很长(这样您就无法在作业完成之前阻止您的网络请求)和/或您需要扩展您的应用程序以支持更多的负载。从本质上讲,想法是使用生产者-消费者模式,您的 Web 服务器会将请求添加到持久化(例如数据库中的表)队列,然后您有多台机器/服务器运行一个作业/Windows 服务,该作业/Windows 服务将从该队列读取并运行该过程以生成文件。

关于C#、ASP.net 应用程序调用可执行文件来创建输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7550817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com