【问题标题】:WCF Service and ConcurrencyWCF 服务和并发
【发布时间】:2013-05-09 17:20:01
【问题描述】:

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

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

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

【问题讨论】:

  • 您使用的是哪种驱动程序,需要在您的服务器上使用?老实说,这会让我有点害怕。
  • 这是一个非常古老的遗留系统。还有另一个我可以使用的驱动程序,但是如果我可以避免的话,我不想做很多其他的改变。无论哪种情况,我都必须编写 Web 服务,并且我想利用现有的单线程代码来完成我已经拥有的这项工作。

标签: wcf iis concurrency


【解决方案1】:

我会考虑:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多