【问题标题】:Is it possible to trigger periodic events from a WCF Service?是否可以从 WCF 服务触发定期事件?
【发布时间】:2013-07-26 21:15:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# wcf iis windows-services


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您想做的事情可以通过server pushfull-duplex 方法来实现。但是对于心跳,您可能会使用 WebClient 进行简单的 http ping,如 here 所述。自托管(非 IIS)时,您可以覆盖 ServiceBase.OnStart/OnStop 并启动/停止计时器以定期触发 ping。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        • 2016-01-14
        • 2015-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多