是否可以从WCF服务触发定期事件

本文关键字:事件 服务 WCF 是否 | 更新日期: 2023-09-27 18:25:17

我正在创建一个WCF服务(将在IIS中运行),客户端可以与之对话。我希望我的服务器定期向主服务器发送检测信号。

目前,我认为唯一能做到这一点的方法是创建第二个Windows服务,它将发送心跳信号。

有没有办法让我原来的WCF服务定期运行一个事件,这样我就可以用一个服务完成所有事情?

是否可以从WCF服务触发定期事件

在WCF服务中不是一个好方法

如果该服务将得到一些使用,您可以存储NextHeartBeat时间戳,并检查是否到了向主服务器发送消息的时间。

您想要做的事情可以通过服务器推送或全双工方法来实现。但对于heartbeat,您可能会使用WebClient进行简单的http ping,如下所述。当自托管(非IIS)时,您可以覆盖ServiceBase.OnStart/OnStop并启动/停止计时器以定期触发ping。

但是,在IIS中托管WCF服务通常意味着您的服务是在每个请求的基础上实例化的,因此没有服务实例可以发送持久的ping。

这取决于您需要将检测信号发送到主服务器的目的。您是否可以让主服务器定期对WCF服务进行请求?

如果你真的需要一个长期运行的服务,那么在Windows服务而不是IIS中托管WCF可能是一个选择。