我的WCF服务器需要定期上下移动,客户端有时会使用服务器,但如果它关闭,客户端就会忽略它.所以每次我需要使用服务器服务时,我会检查连接状态,如果它没有打开,我打开它.问题是,如果我在服务器关闭时尝试打开,则会出现性能下降的延迟.我的问题是,有没有办法做某种事myClient.CanOpen()
?所以我知道是否有任何意义打开与服务器的连接.
有一个WS-Discovery实现,可以让您监听服务的上/下通知.这也是一种非常方便的服务地址解析形式,因为它利用UDP多播消息来查找服务,而不是在客户端上配置一个设置地址. WCF的WS-Discovery
还有一个由Microsoft员工完成的实现: WS-Discovery示例实现
.NET 4.0将包含本机.您可以在Jesus Rodriguez的博客上阅读有关.NET 4.0的实现.它有一个很好的图表,详细介绍了在WCF 4.0中使用WS-Discovery在 WS-Disco中进行的ad-hoc通信
您可能会考虑的另一件事,特别是如果您的消息主要是单向的,是一个本机断开连接的协议,如MSMQ.我不知道您的应用程序的设计是什么样的,但MSMQ将允许客户端发送消息而不管服务的状态如何,服务将在重新启动时获得它.通过这种方式,您的客户端不必非常阻止尝试在通信之前确认服务已启动...它只会触发并忘记.
希望这可以帮助.