我有一个驱动程序,我需要通过一个不是线程安全的网站来访问它。由于在给定时间可以有很多人在站点上,我想我会创建一个 WCF 服务来处理所有调用。大多数调用都是将项目添加到工作队列的异步调用。有些会是同步调用以获取仍未处理的项目列表或已处理的项目。
由于驱动程序不是线程安全的,因此服务必须同时接收潜在的许多请求,并将项目添加到工作队列、返回工作队列或返回工作完成队列。服务中的单线程操作需要从工作队列中读取,使用此非线程安全驱动程序处理作业,并在完成时更新工作完成队列。
虽然我在概念上很清楚该做什么,但实施的细节让我有点困惑。我认为我应该在 IIS 中托管该服务,因为它必须响应 Web 请求并像任何其他网站一样运行,但我不确定如何保证驱动程序的访问将保持单线程而不阻塞 Web要求。我是否需要第二个服务(可能是 Windows 服务)来处理对驱动程序的所有访问并使用 IIS 托管的 WCF 服务来获取下一个队列项并在处理完成时更新队列?