WCF保持活跃和备份策略

时间:2011-10-27 00:45:38

标签: wcf backup

是否可以(使用行为和IClientMessageInspector.BeforeSendRequest)在发送消息之前更改通信通道?

我需要更改此内容,因为我的代理服务器有备份/主要策略。

2 个答案:

答案 0 :(得分:0)

根据您的评论,如果主要服务处于离线状态,您似乎希望能够在呼叫中途切换服务端点。我认为没有办法做到这一点 - 至少不是优雅的。

一旦建立了通信通道,它就会被设置,直到它被关闭(或中止)。没有办法将它从一个端点切换到另一个(备份)端点 - 你甚至无法通过创建一个新的通道来实现它,因为代理仍然会使用主端点。

根据我对WCF的理解,您可能会遇到的最接近的是客户端检测到主服务没有响应(很可能是通过超时),然后它可以切换到为辅助服务器配置的代理/备份服务。

现在,可能能够在IClientMessageInspector.BeforeSendRequest内进行一些检查,看看服务是否有响应,如果没有响应,请尝试使用备份生成新的代理服务端点并在那里发送消息... 但是我不知道这是否会起作用,即使它确实如此,它也会让我觉得有点像kludge。

最简单的解决方案是,如果主要终端关闭,客户端只需切换到备用服务端点,IMO。

答案 1 :(得分:0)

旧帖子,但供将来参考。

我认为您正在寻找WCF路由(.NET4),命名空间“System.ServiceModel.Routing.RoutingService”。例如,在此页Practical Messaging Scenarios with WCF 4上搜索“高可用性”。

来自1:“备份列表向路由服务指示,如果主要端点OneWayService1不可用(即,它无法响应),则路由服务应尝试以OneWayService2开头的每个后续端点并以OneWayService4结束,直到服务响应。“