0

我想使用在 IIS 上运行的 ASP.NET 开发一个 Web 应用程序。

如果用户提交 MAXIMA 输入命令,则后面的代码将要求自定义 Windows 服务创建一个新的不同临时进程来执行外部程序集。

更准确地说,只有一个 Windows 服务为所有用户服务,但每个用户都将与一个运行外部程序集的不同的临时进程相关联。

Windows 服务包含一个侦听某个端口的单个套接字和一个用于通信的异步套接字列表。列表中的每个套接字都将与运行作为客户端套接字的外部程序集的不同临时进程进行通信。

请注意:我使用进程而不是应用程序域,因为外部程序集是批处理文件(不是托管程序集)。

我的问题是:

  1. 如何从后面的代码调用 Windows 服务?
  2. 如何将每个用户与不同的临时进程相关联?
  3. 如果有越来越多的用户同时工作,如何提高可扩展性?
  4. 如果用户输入的 Maxima 输入命令导致进程长时间运行,那么通知用户进度的明智方法是什么?

以下链接为您提供有关我的项目的更多详细信息:https ://sourceforge.net/projects/aspmaxima/forums/forum/1190702/topic/3786806

先感谢您。

4

1 回答 1

1

您不应该在 MVC 应用程序中使用代码隐藏。

与非托管代码互操作时的可扩展性很难。唯一明智的方法是分解问题。

  • 当您启动非托管应用程序时,它已经拥有自己的进程。
  • 从 Web 应用程序调用的服务中的多个任务流,带有监控?您正在描述Windows Server AppFabric。使用 AppFabric 托管您的服务,您不必自己编写所有这些内容。
  • 关于可扩展性,当您处理非托管进程时,您将不得不限制可以同时启动的数量。需要反复试验来确定特定硬件的最佳选择。
  • 如果该应用程序专门提供,您只能监控非托管任务的进度。
  • 从服务启动任意非托管代码是危险的,因为默认情况下,启动的应用程序会继承服务的(通常是提升的)权限。考虑为启动的应用程序使用特定的、有限的凭据,而不是默认凭据。
于 2010-07-28T13:13:14.863 回答