0

我知道在 IIS 中托管的 WCF 服务类中设置计时器并不是一个好主意,因为它们的生命周期很短。从这里的建议来看,服务听起来也是解决这种情况的最佳方式。

但是有没有人尝试在生产中的自托管服务中使用计时器?我们有一个充当客户端的 Windows 服务,目前使用计时器进行定期操作。

这在大多数情况下都很好,但我担心设计的稳健性:一些操作很关键(金融系统计算触发器)。由于 WCF 服务和 Windows 服务是两个组件,因此很难确保两者都运行。

如果我将关键操作移至 WCF 服务内的计时器,我会消除该问题,但我还应该关注什么?

4

1 回答 1

0

如果我理解正确,您的问题实际上是关于 IIS 托管的 WCF 服务,对吗?

IIS 控制您的 WCF 服务在其中运行的应用程序池。这意味着 IIS 可能决定回收您的应用程序池以及其中的所有应用程序/服务。然后,您的服务只有在被客户端调用后才会再次激活。因此,不能依赖 WCF 服务或 ASP.NET 应用程序中的调度。

如果您可以自托管 WCF 服务,情况当然会发生变化。那么就不用考虑IIS应用池了,可以随意调度。因此,如果您需要 WCF + 调度的组合,最好创建一个包含两者的 Windows 服务。

于 2011-07-29T09:13:05.960 回答