如何将客户端的所有请求发送到服务器中的单个进程。

时间:2010-06-18 10:33:01

标签: c# asp.net

我正在开发网站,它由设备名称列表和相关的Build Button组成。单击“生成”按钮时,一个进程将在服务器中运行。当十多个用户单击“构建”按钮时,将在该服务器上创建的更多进程将挂起。如何将客户端的所有请求发送到服务器中的单个进程。

2 个答案:

答案 0 :(得分:1)

您可以设置一个WCF Windows服务,该服务在内部具有某种当前正在运行的进程的数量,并确保每个运行一个进程的X线程数永远不会超过X个。如果您只需要一个,而不仅仅是有限的数量,您甚至不需要担心线程,并且可以在处理其他请求时暂停其他请求。

如果需要,可能会更难向用户提供反馈,因为如果一个或多个进程排队,则无法立即告诉用户构建已经开始等。

答案 1 :(得分:1)

听起来你正在产生一个进程线程来在服务器上进行构建(我不建议这样做,因为ASP.Net应用程序中的产生线程可能是tricky)。解决产生新线程的每个请求的最简单方法是将您的构建过程与Asp.net Web应用程序分开。所以:

  1. 将构建操作移动到同一台计算机上的Windows Service
  2. 使用Windows Communication Foundation将服务入口点公开给Asp.Net应用程序
  3. 使WCF实例成为singleton instance,这样一次只能有一个请求访问它。 (这是仅使用一个线程的缺点。)
  4. 您的另一个选择是将请求记录到队列中,并让一个进程(可能是Windows服务)监视队列,并一次处理一个队列。这样做的缺点是您不会立即获得用户的结果。你需要一些方法在流程结束时通知他们,但你很可能也必须对上述解决方案做同样的事情。