我正在使用第三方 .NET 4 WCF 服务,该服务作为服务引用添加到我的解决方案中。有没有办法配置请求,使我的服务不会 Ddos:ing 第三方服务?
我知道 ServiceThrotdling
可以控制以下参数:
- MaxConcurrentCalls
- MaxConcurrentSessions
- MaxConcurrentInstances
我的应用程序是单线程的,因此上述参数不会产生影响。
我想限制每个时间段的请求数量。也许可以在每个请求之间暂停一下。显然,我可以为该服务编写一个适配器并自己处理这个问题,但第三方服务包含约 200 个方法,因此需要大量代码。
是否可以通过配置以这种方式限制请求?
最佳答案
您的问题已经有几周了,所以我不知道您是否仍然需要它。至少值得一试...另外,如果我误解了您的场景,请纠正我。
据我了解,您希望限制自己的服务仅逐个请求调用第三方服务。我不知道有什么可配置的解决方案。但是,正如您所说,您可以实现自己的解决方案,我建议采用不同的方法。
您可以将请求放入队列中,然后一次处理一个队列条目。 这可以通过多种方式实现,具体取决于您必须使用的环境。
我想到了两种解决方案。
一种简单的方法可能是在您自己的服务中使用内存队列,每个条目调用第三方一次并使用某种 locking 。但这可能需要仔细考虑以避免丑陋的僵局。
更复杂,但可能更好的可扩展解决方案: 您可以configure your service写入 Microsoft 消息队列 (MSMQ) 基础结构和 add another service它按顺序将这些消息处理到第三方服务。
关于c# - WCF 请求限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320081/