【问题标题】:Duplex WCF service channels continuously alive (WSDualHttpBinding)双工 WCF 服务通道持续活动 (WSDualHttpBinding)
【发布时间】:2011-06-30 17:33:00
【问题描述】:

架构:

  1. 包含 wcf 双工服务的控制台应用程序;
  2. Windows 应用程序消费者;每个应用都订阅 Duplex,所以我们有一个订阅者列表 并且服务必须向其中一些发送通知,以防出现某些事件;

问题:

  1. 如何保持连接持续活动,以便服务可以向客户端发送通知?

我发现此绑定有 2 个通道。我需要永久打开服务通道(用于回调)。

谢谢;

【问题讨论】:

    标签: wcf duplex wsdualhttpbinding


    【解决方案1】:

    我和你有同样的问题,要解决它,你需要实现一个 keep alive 方法。对您的服务进行虚拟调用对于拥有 24/7 WCF 服务来说有点愚蠢,因为这并不是 WCF 的最佳架构方式,但我们知道有时我们需要的并不总是最好的。

    是的,只需每 5 分钟调用一次 WCF 服务,这样就可以保持连接处于活动状态。也许您也可能遇到其他问题,在我的情况下,我没有很多 WCF 服务的订阅者,所以这个解决方案很好。

    【讨论】:

      【解决方案2】:

      只要客户端连接到服务,回调通道就会处于活动状态。一旦客户端断开连接(或通道发生故障),回调通道将关闭。

      【讨论】:

      • 嗨蒂姆,谢谢。你能告诉我哪一种是保持客户端连接和通道处于非故障状态的最佳方式(24/24)吗?
      • 您可以设置较高的超时值,但随后您可能会遇到其他问题(例如资源限制)。是什么推动了客户端始终连接的需求?听起来您几乎希望客户端充当侦听器,我不确定 WCF 是否适合此模型。据我了解,客户仅在完成与服务的交互所需的时间内存活。只要主机启动,服务本身就可以运行(例如,作为运行 WCF 服务主机的 Windows 服务)。
      • 是的,他们正在充当听众。谢谢。如果不是 WCF,哪个是最好的设计?
      • 这在很大程度上取决于您的解决方案试图解决的问题 - 即,您要建模的业务流程是什么?您能否描述一下服务和客户正在做什么(或者您希望他们做什么)?
      • 从 WCF 的角度需要考虑的是 Juval Lowry 在他的书 Programming WCF Services 中的发布-订阅系统详细信息。从 2006 年 10 月起,MSDN Magazine 提供了该内容的早期版本,但请记住,它基于预发布的 WCF 3.0。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多