c# - WCF 请求限制

标签 c# wcf request throttling

我正在使用第三方 .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/

相关文章:

Node.js Axios 请求

c# - 自定义 FTP 客户端 PASV 数据连接被拒绝

c# - 对用户单击已选择的ListViewItem,MVVM使用react

c# - 对 WCF 服务进行单元测试

wcf - 将 xml 数据发送到 WCF REST 服务

python - 在不丢失表单数据的情况下,在 Pylons 中重定向请求的首选方法是什么?

c# - 减去两个 ViewBag 值

c# - 格式化规则在类成员声明之间有空行

wcf - WCF 服务中的 IncomingWebRequestContext.UriTemplateMatch null

php - 如何解决类App\Http\Requests\UpdateUserRequest不存在?拉拉维尔 5.3