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