【问题标题】:Executing a console app from asp.net从 asp.net 执行控制台应用程序
【发布时间】:2011-11-12 21:04:27
【问题描述】:

我知道我可以通过 Process.Start 从 Web 应用程序执行控制台应用程序,但我想了解如何正确设计此项目。

经过身份验证的用户可以提交要求执行控制台应用程序的请求,该应用程序执行一些后端工作(可能需要也可能不会花费很长时间),并且需要向用户显示来自控制台应用程序的结果。

Process.Start 是否在与 asp.net 进程相同的线程中执行控制台应用程序?如果是这样,这是否会“锁定”用户的浏览器?我应该异步执行此操作吗?如果是这样,如何推荐?如何从控制台应用返回结果?

此外,这种方法是否可以扩展到数百个提交请求的用户?

还有回复吗?

【问题讨论】:

  • 考虑使用 WCF 或 Web 服务而不是控制台应用程序
  • @YuriyRozhovetskiy 不幸的是,这个控制台应用程序已经创建,无法转换为网络服务

标签: c# asp.net asynchronous console


【解决方案1】:

Process.Start 是一个非阻塞调用。您可以使用Process 对象并处理其事件并读取或写入其流。

至于是否可扩展,您可能需要大量功能强大的服务器。这取决于实际过程。

【讨论】:

    【解决方案2】:

    常见的解决方案是有一个存储后台操作队列的数据库表。因此,当用户提交请求时,会在队列表中添加一条新记录。控制台应用程序定期运行(例如使用 Cron 调度),检查数据库中的队列表,在后台执行任务并将结果写入数据库。

    这种方法具有很强的可扩展性并且被广泛使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      相关资源
      最近更新 更多