WCF服务和并发

时间:2013-05-09 17:20:02

标签: wcf iis concurrency

我有一个驱动程序,我需要通过一个非线程安全的网站访问。由于很多人可以在给定时间访问该网站,我想我会创建一个可以处理所有呼叫的WCF服务。大多数调用都是异步调用,以将项添加到工作队列中。有些是同步调用,以获取仍未处理的项目列表或已处理的项目。

由于驱动程序不是线程安全的,因此服务必须立即接收多个请求,并将项添加到工作队列,返回工作队列或返回工作完成的队列。服务中的单线程操作需要从工作队列中读取,使用此非线程安全驱动程序处理作业,并在完成时更新工作完成的队列。

虽然我在概念上清楚地知道该做什么,但实施的具体细节让我感到困惑。我认为我应该在IIS中托管服务,因为它必须响应Web请求,否则就像任何其他网站一样,但我不确定如何保证驱动程序的访问将保持单线程而不会阻止Web要求。我是否需要第二个服务(可能是Windows服务)来处理对驱动程序的所有访问并使用IIS托管的WCF服务来获取下一个队列项并在处理完成时更新队列?

1 个答案:

答案 0 :(得分:0)

我会考虑:

  1. 客户端调用您的aspx页面,
  2. 页面调用wcf服务(netMsmqBinding)? - 避免阻塞和等待(单一服务,可以托管在你想要的地方)。
  3. 服务器完成后 - 通知客户端(websocket?SignalR?)