【发布时间】:2013-05-09 17:20:01
【问题描述】:
我有一个驱动程序需要通过非线程安全的网站访问。由于在给定时间可以有很多人在站点上,我想我会创建一个 WCF 服务来处理所有调用。大多数调用都是将项目添加到工作队列的异步调用。有些会是同步调用,以获取仍未处理的项目列表或已处理的项目。
由于驱动程序不是线程安全的,因此服务必须同时接收潜在的许多请求,并将项目添加到工作队列、返回工作队列或返回工作完成队列。服务中的单线程操作需要从工作队列中读取,使用此非线程安全驱动程序处理作业,并在完成时更新工作完成队列。
虽然我在概念上很清楚该怎么做,但实施的细节让我有点困惑。我认为我应该在 IIS 中托管该服务,因为它必须响应 Web 请求并像任何其他网站一样运行,但我不确定如何保证驱动程序的访问将保持单线程而不阻塞 Web要求。我是否需要第二个服务(可能是 Windows 服务)来处理对驱动程序的所有访问并使用 IIS 托管的 WCF 服务来获取下一个队列项并在处理完成时更新队列?
【问题讨论】:
-
您使用的是哪种驱动程序,需要在您的服务器上使用?老实说,这会让我有点害怕。
-
这是一个非常古老的遗留系统。还有另一个我可以使用的驱动程序,但是如果我可以避免的话,我不想做很多其他的改变。无论哪种情况,我都必须编写 Web 服务,并且我想利用现有的单线程代码来完成我已经拥有的这项工作。
标签: wcf iis concurrency