限制并发呼叫的最佳做法

时间:2015-01-28 19:00:45

标签: c# asp.net synchronization

我需要有关在asp.net MVC Web应用程序中限制调用代码的最佳实践的建议。我们有一个类处理一些涉及调用Salesforce的复杂工作,我们称之为ComplexSfLogic.cs

Salesforce一次限制10个并发请求,鉴于我们逻辑的复杂性和大量用户,我们正在推动这个限制。

lock()可以一次限制对资源ala 1的访问,但是我想一次限制对10的访问 - 当10个以上同时发生时,实质上会限制对我的类的调用。< / p>

我可以想到很多方法可以通过coding up a solution来处理这个问题,但是有一个最佳实践或现有的.net类可以像我所描述的那样限制方法调用。我认为我最大的问题是我在搜索答案时没有使用正确的关键字,所以我很欣赏任何方向。

我已经看到ServiceThrottlingBehavior类直接限制WFC调用,但是我需要在我的ComplexSfLogic.cs类中进行限制,因为该类会在某些情况下进行多次调用并且需要进行分组一起。谢谢!

1 个答案:

答案 0 :(得分:3)

使用SemaphoreSlim。它允许设置临界区中线程数的限制。它还支持异步,如果许多线程可能正在等待并排队,这可能是一个好主意。

如果在x毫秒(或立即)之后无法获取信号量,您也可以将其用作负载断路器并使操作失败。