0

我正在创建一个客户端可以与之交谈的 WCF 服务(在 IIS 中运行)。我希望我的服务器定期向主服务器发送心跳。

目前我看到的唯一方法是创建第二个 Windows 服务来发送心跳。

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

4

2 回答 2

1

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

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

于 2013-07-26T21:48:03.133 回答
1

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

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

这取决于您需要到主服务器的心跳的目的。您能否改为让主服务器定期对 WCF 服务进行请求?

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

于 2013-07-26T22:05:49.953 回答