【发布时间】:2010-01-21 09:54:07
【问题描述】:
我有一个使用 WCF 实现并托管在 IIS7 中的 Web 服务,具有提交-轮询通信模式。发出初始请求,该请求快速返回并启动后台进程。客户端轮询后台进程的状态。此接口已设置且无法更改(它是我们所依赖的外部服务的模拟)。
我通过向现有服务添加另一个服务合同来实现后台处理,该服务合同使用单向消息合同启动长时间运行的流程。 “后台”服务会根据状态更新数据库,以便与主服务进行通信。这样可以避免创建任何新的 Web 服务或要部署的项目。
问题是后台进程占用大量 CPU 资源,并且似乎正在饿死其他服务调用。它将占用整个处理器,当后台进程的单个实例正在运行时,对主服务的状态轮询调用可能需要一分钟以上。我不在乎后台进程需要多长时间。
有没有办法限制后台方法的资源使用?或者在不更改我的提交/轮询服务合同的情况下在 WCF 中执行长时间运行的异步进程的明显方法?如果这两个服务仍在同一台服务器上运行,将它们分成不同的 Web 服务会有所帮助吗?
【问题讨论】:
标签: wcf