我正在 WCF 服务下开发一个系统,其中包含两个模块,并且该服务是自托管的。其中一个模块必须处理多个客户端,而另一个模块必须一次处理一个直接文件下载请求。此模块上的其他请求设置在队列中。
如果是对模块二的请求,系统应该保留其他请求,但它应该处理对模块的请求
- 如何使用 WCF 服务 throttle 来实现此目的?我尝试实现两个 throttle ,但没有奏效。
- 是否可以在 WCF throttle 中计算待处理请求的数量?
我正在尝试通过使用 MySQL 来保留队列来完成此操作,但我无法保留针对模块 2 的当前请求。是否可以保留用户请求并在当前进程完成后处理它?
最佳答案
在一个主机下获得两个 throttle 的最好方法是分离接口(interface)服务并定义单独的端点。这允许我在一台主机下使用两个 throttle ,但在两个不同的端口下(这没问题;))。
关于计算待处理请求的数量,我认为我需要通过以下链接的一些支持来实现性能计数器:
- How can I access the C# performance counter in the code?
- https://support.microsoft.com/en-us/kb/316365?wa=wsignin1.0
如果我能够在 WCF 服务中实现挂起的请求计数,我会更新。
关于c# - 一个 WCF 服务的两个 throttle ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30637162/