通过WCF双工通道长期运行的回调合同 - 替代设计模式?

时间:2009-03-01 18:42:20

标签: wcf design-patterns duplex publish-subscribe

我有一项Windows服务,可以将雷达测速仪的速度读数记录到数据库中。另外,我使服务成为WCF服务器。我有一个表单和一个CF客户端订阅该服务,并在有满足某些标准的阅读时被回叫。

这原则上有效,但一段时间后通道超时。似乎长期连接存在一些基本问题(参见 http://blogs.msdn.com/drnick/archive/2007/11/05/custom-transport-retry-logic.aspx)和双工HTTP回调可能不是正确的解决方案。有没有其他方法可以实现WCF的发布/订阅模式?

编辑:即使超时2小时,频道最终也会受到损害。我收到这个错误:

无法完成“SignalSpeedData”操作,因为会话通道超时等待接收消息。要增加超时,请在配置文件中的绑定上设置receiveTimeout属性,或者直接在Binding上设置ReceiveTimeout属性。

这发生在最后一次成功通话后15分钟。我想知道如果不是保持会话开放,就可以为每次通话重新建立一个新的会话。

1 个答案:

答案 0 :(得分:6)

可靠的消息传递将满足您的需求。如果出现问题,频道会重新建立。 WSDualHTTPBinding为http绑定提供了这个,并且还有一个允许这个的tcp绑定。如果您在同一台计算机上,则命名管道绑定将默认提供此功能。