我需要有关在asp.net MVC Web应用程序中限制调用代码的最佳实践的建议。我们有一个类处理一些涉及调用Salesforce的复杂工作,我们称之为ComplexSfLogic.cs
。
Salesforce一次限制10个并发请求,鉴于我们逻辑的复杂性和大量用户,我们正在推动这个限制。
lock()
可以一次限制对资源ala 1的访问,但是我想一次限制对10的访问 - 当10个以上同时发生时,实质上会限制对我的类的调用。< / p>
我可以想到很多方法可以通过coding up a solution来处理这个问题,但是有一个最佳实践或现有的.net类可以像我所描述的那样限制方法调用。我认为我最大的问题是我在搜索答案时没有使用正确的关键字,所以我很欣赏任何方向。
我已经看到ServiceThrottlingBehavior
类直接限制WFC调用,但是我需要在我的ComplexSfLogic.cs
类中进行限制,因为该类会在某些情况下进行多次调用并且需要进行分组一起。谢谢!
答案 0 :(得分:3)
使用SemaphoreSlim
。它允许设置临界区中线程数的限制。它还支持异步,如果许多线程可能正在等待并排队,这可能是一个好主意。
如果在x毫秒(或立即)之后无法获取信号量,您也可以将其用作负载断路器并使操作失败。