排队WCF请求的最佳方法,以便一次只处理一个

时间:2014-03-14 15:12:54

标签: wcf architecture singleton queue quickbooks

我正在构建一个WCF服务来处理两家公司的所有QuickBooks SDK功能。由于QuickBooks SDK需要打开/关闭实际的QuickBooks应用程序来处理请求,因此一次只能处理一个请求,或者QuickBooks处于非常糟糕的状态。我正在寻找允许最终用户发出QuickBooks数据请求的最佳方法,并让我的WCF应用程序保留该请求,直到上一个请求完成。

如果当前没有处理任何内容,则请求将立即通过。

有谁知道处理这类功能的最佳方法?任何第三方/内置.NET库?

谢谢!

2 个答案:

答案 0 :(得分:3)

使用WCF限制。它可配置,无需更改代码即可解决您的问题。

请参阅我对WCF ConcurrencyMode Single and InstanceContextMode PerCall的回答。

答案 1 :(得分:0)

执行此操作的一种方法是在用户和Quickbooks应用程序之间放置队列:

  • 来自用户的请求被放置在队列或数据表中。
  • 后台进程一次从队列中读取一个项目,将其发送到Quickbooks并将结果放在结果表中。
  • 客户端应用程序从结果表中读取结果。

这需要一些工作,但用户总是能够提交请求,并且一次只能处理一个。

如果您使用并发模式Single,ErnieL提供的解决方案也会起作用,但在重负载情况下,用户将获得超时。